CSE116: Computer Science 2

Spring 2026

Jump to current week


Syllabus

Course Description

You know the basics of programming: Expressions, variables, functions, control flow, data structures, and memory. With these concepts, you can train a computer to complete nearly any task you can imagine. The next step is to use these skills in more efficient ways to write better software.

In this course, you will learn:

  • Classes and Object-Oriented Programming (OOP) - How to organize large projects
  • Data Structures & Algorithms - How to efficiently work with data
  • Memory - How a computer runs your software

Expectations

This is not an easy course! To do well in this course you are expected to:

  • Have a strong understanding of the basics of programming (Including expressions, variables, functions, control flow, data structures, and memory)
  • Invest a minimum of 12 hours/week* in CSE116 including at least 7 hours/week outside of class/lab

* If you do not have a strong understanding of the basics of programming, you will need to spend much more than 12 hours/week in order to pass this course.

Learning Objective Checklist

There are 10 learning objectives that must be completed in order to pass the course. Learning the material assessed by these objectives is the reason why someone would register for CSE116. This grading structure ensures that you receive the educational value you deserve.

  • Syllabus Quiz and CSE115 Final Exam
  • Tracing Quiz 1 - Classes
  • Tracing Quiz 2 - Object-Oriented Programming (OOP)
  • Tracing Quiz 3 - Data Structures
  • Coding Quiz 1 - Classes
  • Coding Quiz 2 - Object-Oriented Programming (OOP)
  • Coding Quiz 3 - Data Structures
  • Interview 1 - Classes
  • Interview 2 - Object-Oriented Programming (OOP)
  • Interview 3 - Data Structures

All 10 learning objectives will be graded on a pass/fail (or complete/incomplete) basis. If you complete 0-9 of these learning objectives, you will earn an F in this course. You must check off all 10 objectives. Below is a brief explanation of each type of learning objective assessment.


Syllabus Quiz and CSE115 Final Exam

We want to ensure that you have a firm understanding of the syllabus, and check how prepared you are to begin this course. Your performance on the CSE115 final exam will not affect your grade, but you must take it. Anyone who is unable to attend the exam will be given a makeup opportunity.


Read Code / Tracing Quizzes

You need to be able to read before you can write. You will trace through everything that happens in stack and heap memory as a given program executes. Tracing quizzes will take place in lab and will be completed using the tracing tool, UBPower.

  1. Tracing Quiz 1 - Classes: Trace the memory usage of programs that use classes to create objects that are stored using references
  2. Tracing Quiz 2 - Object-Oriented Programming (OOP): Trace the memory usage of programs that use inheritance and polymorphism
  3. Tracing Quiz 3 - Data Structures: Trace the memory usage of programs that use Linked-Lists and Trees

Write Code / Lab Coding Quizzes

You will write a significant amount of code as take-home assignments. The coding quizzes will ensure that you are capable of writing small programs in a timed environment without access to any resources. The intention is for these quizzes to be very easy if you understand what you wrote for the take-home programming assignments.

  1. Coding Quiz 1 - Classes: Write programs that include classes, create objects, modify objects on the heap, and pass objects by reference
  2. Coding Quiz 2 - Object-Oriented Programming (OOP): Write programs that use inheritance
  3. Coding Quiz 3 - Data Structures: Write programs that use linked-lists and trees

Explain Concepts / Lab Interviews

Communication is critical. The interviews will ensure that you are able to carry on a technical conversation about the course topics.

Your interviewing TA does not decide if you completed the learning objective. Your interviewing TA will transcribe the interview which will be reviewed by a separate grading team. Do not pressure your interviewing TA into marking you for completion.

  1. Interview Topic 1 - Classes: Explain the concepts of classes, objects, references, heap memory, and how they affect the programs we write
  2. Interview Topic 2 - Object-Oriented Programming (OOP): Explain the concepts of inheritance and polymorphism and how they can help us as we write large pieces of software
  3. Interview Topic 3 - Data Structures: Describe the structures of linked-lists, binary trees, stacks, queues, binary search trees, graphs, as well as algorithms and their runtime


Makeups and Final Exam

You will be given 3 opportunities to complete each of the 9 lab learning objectives (3 Tracing quizzes, 3 coding quizzes, and 3 interviews). Each has a lab and a makeup lab listed on the schedule below. If you do not complete all 9 lab learning objectives in their first 2 attempts, you will have a third opportunity to complete them on the final exam. Making up lab learning objectives is the only purpose of the final exam.

Clarifications:

  • If you have nothing to makeup, you do not have to attend the makeup lab. (eg. If you completed tracing quiz 1, coding quiz 1, and interview 1 on the first attempt, there's no need for you to attend the makeup 1 lab. Go watch a movie and relax instead)
  • If you complete every learning objective after the first 2 attempts, you do not need to attend the final exam. Go enjoy your break! You've earned it.
  • There are 9 parts on the final exam corresponding to the 9 lab learning objectives. If you need to take the final exam, you only need to complete the parts that you did not complete on the first 2 attempts.
  • Multiple attempts are only offered due to this mastery-based approach to make sure you have ample chances to prove that you've filled in these gaps. Please do not use the existence of multiple chances to blow off the first attempt. Many students have failed this course by relying on the extra chances to skip labs or show up unprepared. Please do not do this. We like our students, but we do not want to see you in CSE116 next semester.

Points

If you complete your learning objective checklist, your grade will depend on the number of points you've earned.

Course Activity Points
Lab Activities 150
Lecture Questions 50
5 Problem Sets (50 pts each) 250
5 Game Feature Assignments (100 points each) 500
State Pattern Assignment 50
Total 1000

Lab Activities

Every activity in lab that is not a learning objective is considered to be a lab activity. This includes the quizzes and interview 0 which will cover java basics and serve as practice for these types of assessment. Several lab activities will give you a chance to build simple circuits and are labeled as hardware activities on the schedule.

There are 7 activities worth 25 points each. Your total amount of lab activity points is capped at 150 to allow for one missed, or poorly performed, lab without consequence.

Note that some labs contain both a learning objective assessment and an activity.


Lecture Questions

Most lectures will contain a TopHat question worth 2 points (1 point for participation and 1 point for correctness). Your total lecture question points are capped at 50 and there will be many more than 50 points available allowing for mistakes, login issues, sickness, etc without consequence.


Problem Sets and Game Features

Problem sets and game features are take-home programming assignments that are submitted to AutoLab. You have an unlimited number of submissions on these assignments. All deadlines are listed on the course schedule below.

Problem sets will contain a variety of small programming problems, while game features will have you adding features to a large provided code base. Game features will give you practice working with a large complex codebase. Being able to work on a large project like this is the primary goal of the course and the problem sets are intended to ease you into such a task.

Late Policy: You may submit any problem set or game feature assignment late at a penalty of 10% per day late (additive). Note that whether you are 5 minutes or 23 hours late, it is still considered 1 day late. If the deadline is February 6 and you submit at any time on February 8, it is considered 2 days late for a penalty of 20% off your earned points.

Some of the game features assignments will build on each other. It is not recommended to skip any of the game feature assignments. Use the late policy if you are struggling, but don't skip an entire assignment since you might still have to complete it as you start the next assignment.


Grading

You must complete all 10 learning objectives to pass this class. Here's a chart to make that abundantly clear:

Learning Objectives Complete Grade
10 Grade depends on the number of points earned
0-9 F

If you complete all 10 learning objectives:

Points Grade
925 - 1000 A
900 - 924 A-
875 - 899 B+
850 - 874 B
825 - 849 B-
800 - 824 C+
750 - 799 C
700 - 749 C-
650 - 699 D
0 - 649 -or- <10 LOs F

Readings

There is no textbook for this course. Instead, links to relevant readings and tutorials are provided in the course schedule. When a reading is listed, you should study it before lecture.

Academic Integrity

CSE Department Academic Integrity Policy

UB Academic Integrity Policy

In addition to the department and university policies, the following apply to this course:

  1. All submitted work must be of your own creation.
  2. Do not help another student violate point 1.

All violations will result in:

An F in CSE116.

Examples of acceptable behavior:

  • Discussing an assignment with your classmates and brainstorming abstract solutions, then writing the code on your own
  • Forming study groups and discussing course material and assignments on Discord, Zoom, etc.
  • Studying from supplementary material to improve your understanding of the course topics
  • Asking the teaching staff for clarification on a homework question
  • Having, or hiring, someone to help you understand the concepts of the course
  • Copying code from courses examples repo, linked at the top of this page, into your assignments

Examples of unacceptable behavior:

  • Using Artificial Intelligence to help you write code (The code is not your own creation).
  • Using autocorrect or autocomplete without understanding exactly what the code does (The code is not your own creation).
  • Collaborating with another student to write code for an assignment. (Do not sit next to your friend while you both work on the coding tasks)
  • Allowing another student to see your code or submission for an assignment.
  • Allowing another student to access your work that will be submitted for course credit. (Examples: Do not post you code publicly, host your code in a public repository, or allow a classmate to access your laptop)
  • Having someone help you write code. I don't care if you typed the code when someone else is telling you what to type
  • Copying a large amount of material found on the Internet into your submission.
  • Copying any amount of code you found without knowing exactly what it does, even it's 1 character.
  • Attempting to access the grading code on Autolab.
  • Asking any of the course staff to falsify your grade (eg. Asking for any result that you did not rightfully earn).
  • Submitting lecture questions without attending the entire lecture in person.
  • Submitting code for credit without being able to explain how the code works and why you wrote it the way you did (The code is not your creation if you can't).

Any student may be challenged by the course staff at any time to prove that they did create the code they submitted for course credit. They must be able to explain their code and walk through their thought process as they wrote the code. The method of proof can vary and is left for the course staff to decide. If the student fails to convince the course staff that they created all the code they submitted for course credit, they will be found in violation of this academic integrity policy. Please note that if a student is in violation of any other part of this policy, it is still a violation even if they can prove that they were the creator of their code (Ex. If they did write their code, but helped someone else cheat).

If challenged, the following excuses are not acceptable:

  • "That assignment was 3 weeks ago. I forgot." (If you forgot everything in 3 weeks, you did not learn it)
  • "I got that from the Internet." (You're clearly not the creator)
  • "I didn't write that." (Yes, this is a common excuse. At least it makes the meeting easier..)
  • "The TA told me to do that." (If they did, you still need to understand all code you submit)
  • "I hired a tutor" (You hired a cheater)

If you plan on cheating, plan on taking this course again.


Week 1: Course Introduction
Lab: No Lab
Wednesday
January 21

Course Introduction

Friday
January 23

CSE 115 Final Exam

Week 2: Introduction to Java
Lab: Basics Circuits Activity (Hardware)
Problem Set 0: Java Basics
Game Features 0: Java Basics
Monday
January 26

Introduction to Java - Slides

Wednesday
January 28

Java: Loops and Conditionals - Slides

Friday
January 30

Java: Data Structures - Slides

Friday - async
January 30

Java: Memory + Reading Files + CSV Parsing [async lecture] - Slides

Week 3: Classes
Lab: Tracing Quiz 0 + Coding Quiz 0
Monday
February 2

Classes and Objects - Slides

Wednesday
February 4

Classes and Objects - Slides

Wednesday, February 4 @ 11:59pm
Syllabus Quiz Deadline
Friday
February 6

Classes and Examples - Slides

Friday, February 6 @ 11:59pm
Problem Set 0 Deadline
Week 4: Memory, Arrays
Lab: Interview 0 + Debugging Activity (Software)
Problem Set 1: Classes
Game Features 1: Classes
Monday
February 9

Logic Gates and Memory

Wednesday
February 11

Arrays, ArrayList, and Big-O runtime

Friday
February 13

Recursion with ArrayList

Friday, February 13 @ 11:59pm
Game Features 0 Deadline
Week 5: Memory, Linked Lists
Lab: Logic Gates Activity (Hardware)
Monday
February 16

Linked List Structure - Slides

Wednesday
February 18

Linked List Algorithms - Slides

Friday
February 20

Stack and Queue - Slides

Friday, February 20 @ 11:59pm
Problem Set 1 Deadline
Week 6: Inheritance
Lab: Tracing Quiz 1 + Coding Quiz 1
Problem Set 2: Linked Lists + Inheritance
Game Features 2: Linked Lists + Inheritance
Monday
February 23

Inheritance - Slides

Wednesday
February 25

Inheritance and Override - Slides

Friday
February 27

Abstract Classes and Interfaces - Slides

Friday, February 27 @ 11:59pm
Game Features 1 Deadline
Week 7: Polymorphism
Lab: Interview 1 + Memory Cell Activity (Hardware)
Monday
March 2

Polymorphism - Slides

Wednesday
March 4

Polymorphism - Slides

Friday
March 6

Sorting with Comparators - Slides

Friday, March 6 @ 11:59pm
Problem Set 2 Deadline
Week 8: Testing
Lab: Makeup 1 - Tracing Quiz 1, Coding Quiz 1, Interview 1
Monday
March 9

Unit Testing - Slides

Wednesday
March 11

Testing Strings and doubles - Slides

Friday
March 13

Behavioral Testing - Slides

Friday, March 13 @ 11:59pm
Game Features 2 Deadline
Week 9: Spring Break
Lab: No Lab
Monday
March 16

No Lecture

Wednesday
March 18

No Lecture

Friday
March 20

No Lecture

Week 10: Trees
Lab: Tracing Quiz 2 + Coding Quiz 2
Problem Set 3: Polymorphism + Trees + Testing
Game Features 3: Polymorphism + Trees + Testing
Monday
March 23

Binary Trees and Traversals - Slides

Wednesday
March 25

Binary Search Trees (BSTs) - Slides

Friday
March 27

BST Runtime

Week 11: Memory
Lab: Interview 2 + Documentation Activity (Software)
Monday
March 30

Runtime Examples

Wednesday
April 1

Tail Recursion

Friday
April 3

Heap Memory Details

Friday, April 3 @ 11:59pm
Problem Set 3 Deadline
Week 12: Graphs
Lab: Makeup 2 - Tracing Quiz 2, Coding Quiz 2, Interview 2
Problem Set 4: Graphs + Testing
Game Features 4: Graphs + Testing
Monday
April 6

Graphs - Slides

Wednesday
April 8

Graph with BFS - Slides

Friday
April 10

Graph Examples - Slides

Friday, April 10 @ 11:59pm
Game Features 3 Deadline
Week 13: The State Pattern
Lab: Tracing Quiz 3 + Coding Quiz 3
Monday
April 13

The State Pattern - Slides

Wednesday
April 15

The State Pattern - Slides

Friday
April 17

The State Pattern - Slides

Friday, April 17 @ 11:59pm
Problem Set 4 Deadline
Week 14: Software
Lab: Interview 3 + Two-Bit Memory Activity (Hardware)
State Pattern Assignment
Monday
April 20

Design Patterns

Wednesday
April 22

GUIs

Friday
April 24

MVC

Friday, April 24 @ 11:59pm
Game Features 4 Deadline
Week 15: Hardware
Lab: Makeup 3 - Tracing Quiz 3, Coding Quiz 3, Interview 3
Monday
April 27

Introduction to C

Wednesday
April 29

Microcontrollers

Friday
May 1

Microcontrollers

Friday, May 1 @ 11:59pm
Calculator Deadline
Week 16: Final Exam
Lab: No Lab
Monday
May 4

Review

Wednesday
May 13

Final Exam: 11:45AM - 2:45PM Cooke 121


GitHub icon Website GitHub