CSE116: Computer Science 2

Fall 2025

Jump to current week

Syllabus

Course Description

You come into this course knowing the basics of programming. You're proficient in variables, functions, control flow, data structures, and file IO. 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 code. The course is based around writing larger and more complex programs in order to focus on each of the course learning objectives.

Learning Objectives (what you need to master in order to pass this course):

  • Unit Testing - How to automate the process of verifying that your code is correct
  • Classes and Object-Oriented Programming (OOP) - Organize your code into classes and objects
  • Data Structures & Algorithms - Efficiently work with different types of data

You must show a minimum threshold of all concepts (at least 50% of the points) on each course component that directly relates to the learning objectives listed above.

Expectations

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

  • Invest a minimum of 12 hours/week* in CSE116 including at least 7 hours/week outside of class/lab
  • Want to learn about computer science (This is assumed since you are taking a second CSE course)
  • Have a strong understanding of the basics of programming (Including expressions, variables, functions, conditionals, loops, arrays, key-value stores, and memory traces)
  • Participate in every lecture and lab (There is NO lab during weeks 1 or 2)

* The 12 hour/week minimum is an average. If you invest less than 12 hours/week in CSE116 during the first several weeks of the semester, or do not fully understand all the CSE115 topics, you should expect to work significantly more than 12 hours/week while you catch up. You can expect to spend 40+ hours in a single week on this course if you fall behind or if you have not mastered the basics of programming

Learning Objective: How we measure understanding

Being successful in CSE116 requires a minimum threshold of understanding of each of the course learning objectives. There are 14 assignments throughout the semester that directly relate to your demonstration of mastery of the course material. The assignments are the following:


Read Code / Lab Tracing Quizzes

There are 3 Tracing Quizzes that will take place in lab that will assess your completion of learning objectives. For each quiz will consistent of 2 questions where you will be provided with the code for a program, and you are to trace through the stack and heap memory usage throughout its execution. Each of these question will be graded on a pass fail basis and worth 50 points. As long as you pass one of them you have completed the learning objective. There are 100 possible points for each because of the two questions.

These quizzes are completed in an exam environment. Accessing anything other than the quiz material in UBPower (The tracing tool) is an academic integrity violation.

  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 - Data Structures: Trace the memory usage of programs that use Linked-Lists and Trees
  3. Tracing Quiz 3 - Object-Oriented Programming (OOP): Trace the memory usage of programs that use inheritance and polymorphism

Explain Concepts / Lab Interviews

There are 3 Interview Topics that will take place in lab that will assess your completion of learning objectives. All three interview topics will occur in a single lab near the end of the semester. During interviews, a TA will ask you a variety of questions related to the concept being assessed. To pass an interview, you must demonstrate that you can competently explain these concepts on a technical level. Simple regurgitating memorized definitions will not earn credit on these interviews. You should be able to have a conversation with another human about the concepts which is what the interviews simulate. A pass on the interview will be worth 50 points.

Your interviewing TA does not make decisions for learning objective completion. Your interviewing TA will record your answers during 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 - Data Structures: Describe the structures of linked-lists, binary trees, stacks, queues, binary search trees, and algorithms to work with their data
  3. Interview Topic 3 - Object-Oriented Programming (OOP): Explain the concepts of inheritance and polymorphism and how they can help us as we write large pieces of software

Write Code / Lab Coding Quizzes

There are 3 Coding Quizzes that will take place in lab that will assess your ability to recall the programing aspects of the learning objectives in a closed environment. For these quizzes you will be given a small programming task, and you will write code to complete the task in a timed environment without access to any outside material. You will use IntelliJ to write your code and will have unlimited submissions to AutoLab within the lab time. Each quiz is out of 100 points and a score of 50 is required in order to demonstrate the minimum understanding of the learning objective being tested.

These quizzes are completed in an exam environment. Accessing anything other than the quiz material in IntelliJ or AutoLab is an academic integrity violation.

  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 - Data Structures: Write programs that use linked-lists and binary trees
  3. Coding Quiz 3 - Object-Oriented Programming (OOP): Write programs that use inheritance

Write Large Programs / Take Home Coding Tasks

There are 5 Coding Tasks that you'll complete outside of class time that will assess your completion of learning objectives. These tasks are where students spend most of their time working on CSE116. Through these tasks, you will gain hands-on experience applying the concepts of the course to a large project. All 5 coding tasks build on each other as you work on a project throughout the semester. Each coding task is out of 100 points and a minimum score of 50 is required for each in order to pass the class. The first 50 points for each task demonstrate all aspects of the learning objective and must be earned before the second 50 points for the assignment unlock.

  1. Coding Task 0 - Java Basics: Apply basic programming concepts using Java
  2. Coding Task 1 - Unit Testing + Classes: Implement and use classes and write unit tests
  3. Coding Task 2 - Linked-Lists + Inheritance: Use linked-lists and inheritance in a large program
  4. Coding Task 3 - Trees + Polymorphism: Use trees and polymorphism in a large program
  5. Coding Task 4 - Graphs: Use graphs in a large program

Points

Point breakdown of all graded aspects of the course. Green text represents learning objective parts of the course that must be met to pass.

Course Activity Learning Objective Comprehensive Understanding
Tracing Quiz 0 - Java Basics 0 50
Tracing Quiz 1 - Classes 50 50
Tracing Quiz 2 - Object-Oriented Programming (OOP) 50 50
Tracing Quiz 3 - Data Structures 50 50
Interview Topic 1 - Classes 50 0
Interview Topic 2 - Object-Oriented Programming (OOP)Data Structures 50 0
Interview Topic 3 - Data Structures 50 0
Coding Quiz 0 - Java Basics 0 50
Coding Quiz 1 - Classes 50 50
Coding Quiz 2 - Object-Oriented Programming (OOP) 50 50
Coding Quiz 3 - Data Structures 50 50
Coding Task 0 - Java Basics 50 50
Coding Task 1 - Unit Testing + Classes 50 50
Coding Task 2 - Linked-Lists + Inheritance 50 50
Coding Task 3 - Trees + Polymorphism 50 50
Coding Task 4 - Graphs 50 50
Lab Activity 0 0 50
Lab Activity 1 0 50
Lab Activity 2 0 50
Lab Activity 3 0 50
Lecture Questions 0 50
Totals 700 900

Coding Tasks: All coding tasks must be completed before their listed deadlines. If you do not complete a learning objective before its deadline, you can no longer complete that task, and you have failed the course. Start early so you never have to worry about this.

Interviews: Interviews do not have a Comprehensive Understanding component, but 50 Learning Objective points will be awarded for demonstrating 50% understanding of the concept. Grading decisions will be made at the discretion of the course staff.

Lecture Questions: There are 34 lecture questions throughout the semester which are multiple choice questions at the end of most lectures. Each question is worth 2 points with a maximum of 50 total points available, meaning that 9 questions will be dropped.


Learning Objective Points Grade
All 700 Learning Objective Points Earned (ie. >=50% of completion of critical assignments) Grade depends on the number of Comprehensive Understanding Points earned
0-699 Learning Objective Points Earned (ie. Less than all Tracing Quizzes, all Interviews, all Coding Quizzes, and all Coding Tasks over 50% minimum understanding threshold) F

If you earned all learning objective minimums then your grade will be determined by your percentage of points earned during the semester. Your final letter grade will be determined as follows:


Comprehensive Understanding Points Grade
850 - 900 A
800 - 849 A-
750 - 799 B+
700 - 749 B
600 - 699 B-
500 - 599 C+
400 - 499 C
250 - 399 C-
100 - 249 D
0 - 99 F


Logistics

All lab learning objectives are listed on the course schedule. All of these assessments list how to meet the 50 point (50%) minimum score required in order to pass the course. Ideally, you will complete every objective during these labs. If you don't complete an objective this lab, you will have the following opportunities to prove that you have completed the objective:

  • The 6 lab quizzes have "2nd chance" labs listed on the schedule. Each of these labs provide a 2nd chance to complete the specified tracing quiz and coding quiz. You may attempt any assessments listed on the schedule during these labs if needed, though you still must finish within the lab time regardless of how many assessments you are taking. If you've completed every assessment on your first attempt, there is no need to attend the 2nd chance labs
  • For any of the 9 learning objectives assessed during lab (3 tracing quizzes + 3 coding quizzes + 3 Interview Topics) that you do not complete 50% mastery after all lab opportunities, you will have a final attempt to prove that you've completed the learning objective on the final exam. The final attempt for these 9 lab learning objectives is the only purpose of the final exam. If you complete all 9 of these objectives during the semester, you do not need to attend the final exam. The final exam will only give the opportunity to score the 50 points necessary to pass the course and not the full 100 points offered during the first and second attempts for the quizzes.
  • Please note that this course follows a master-based structure where you must complete all learning objectives to a minimum level of understanding which is 50 points or 50% on each assignment. 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 chance 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.

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:
https://engineering.buffalo.edu/computer-science-engineering/information-for-students/undergraduate-program/cse-undergraduate-academic-policies/cse-academic-integrity-policy.html

UB Academic Integrity Policy:
https://catalogs.buffalo.edu/content.php?catoid=11&navoid=571#preamble

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

All submitted work must be of your own creation, and you must not share your submission with anyone else. If any submission is very similar to code that has been submitted by another student, or can be found online, it is in violation of this course's academic integrity policy, and all students will be penalized whether they were copying or sharing their code with other students so they can copy. If two submissions are similar beyond what is likely if the students worked independently, then both students are in violation of the academic integrity policy.

All violations will result in:

An F in CSE116.

It is your responsibility to understand what constitutes an academic integrity violation. If you have any question whether something you are doing is a violation or not, ask for clarification before receiving an F in the course. We will not entertain excuses after you have been caught.

Examples of acceptable behavior:

  • Discussing an assignment with your classmates and brainstorming abstract solutions, then writing the code independently
  • Forming study groups and discussing course material and assignments on Discord, Zoom, etc.
  • Searching the Internet for supplementary material on 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

Examples of unacceptable behavior:

  • Pressuring a TA to falsify an interview report.
  • Submitting code, or other work, for course credit that is not your own.
  • 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)
  • Using Artificial Intelligence to help you write code
  • 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.
  • Hiring someone to write code for you.
  • Copying a large amount of material found on the Internet into your submission.
  • 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.

Any student may be challenged by the course staff to prove that they did write any code they submitted for course credit. 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 were the author of 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 you can prove that you were the author of your code (Ex. If you did write your code, but helped someone else cheat).

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


Week 1: Introduction to Java
Lab: No Lab
Monday
August 25
Course Introduction
Wednesday
August 27
Introduction to Java - Slides
Friday
August 29
Java: Loops and Conditionals - Slides
Week 2: Introduction to Java
Coding Task 0: Java Basics
Lab: No Lab
Monday
September 1
No Lecture
Wednesday
September 3
Java: Data Structures - Slides
Friday
September 5
Java: Reading Files + CSV Parsing - Slides
Week 3: Unit Testing
Lab: Activity 0 + Coding Quiz 0
Monday
September 8
Unit Testing - Slides
Wednesday
September 10
Testing Strings/doubles - Slides
Friday
September 12
Testing and Recursion - Slides
Friday, September 12 @ 11:59pm
Task 0: Problem Set Deadline
Week 4: Classes
Lab: Tracing Quiz 0
Monday
September 15
Classes and Objects - Slides
Wednesday
September 17
Classes and Objects - Slides
Friday
September 19
Classes and Examples - Slides
Friday, September 19 @ 11:59pm
Task 0: Game Features Deadline
Week 5: Classes - Testing and Tips
Coding Task 1: Unit Testing + Classes
Lab: Activity 1 + Coding Quiz 1
Monday
September 22
Testing Classes
Wednesday
September 24
Testing Classes
Friday
September 26
The Debugger
Week 6: Linked List
Lab: Tracing Quiz 1
Monday
September 29
Linked List Structure - Slides
Wednesday
October 1
Linked List Algorithms - Slides
Friday
October 3
Stack and Queue - Slides
Friday, October 3 @ 11:59pm
Task 1: Problem Set Deadline
Week 7: Inheritance
Coding Task 2: Linked Lists + Inheritance
Lab: 2nd Chance - Coding Quiz 1 + Tracing Quiz 1
Monday
October 6
Inheritance - Slides
Wednesday
October 8
Inheritance and Override - Slides
Friday
October 10
Abstract Classes and Interfaces - Slides
Friday, October 10 @ 11:59pm
Task 1: Game Features Deadline
Week 8: Break
Lab: No Lab
Monday
October 13
No Lecture
Wednesday
October 15
No Lecture
Friday
October 17
No Lecture
Week 9: Polymorphism
Lab: Activity 2 + Coding Quiz 2
Monday
October 20
Polymorphism - Slides
Wednesday
October 22
Polymorphism - Slides
Friday
October 24
Sorting with Comparators - Slides
Friday, October 24 @ 11:59pm
Task 2: Problem Set Deadline
Week 10: Trees
Coding Task 3: Polymorphism + Trees
Lab: Tracing Quiz 2
Monday
October 27
Binary Trees and Traversals - Slides
Wednesday
October 29
Binary Search Trees (BSTs) - Slides
Friday
October 31
Binary Tree Examples
Friday, October 31 @ 11:59pm
Task 2: Game Features Deadline
Week 11: Debugging + Testing Tips
Lab: Activity 3 + Coding Quiz 3
Monday
November 3
Debugging + Testing Tips
Wednesday
November 5
Debugging + Testing Tips
Friday
November 7
Debugging + Testing Tips
Friday, November 7 @ 11:59pm
Task 3: Problem Set Deadline
Week 12: Graphs
Coding Task 4: Graphs
Lab: Tracing Quiz 3
Monday
November 10
Graphs - Slides
Wednesday
November 12
Graph with BFS - Slides
Friday
November 14
Graph Examples - Slides
Friday, November 14 @ 11:59pm
Task 3: Game Features Deadline
Week 13: The State Pattern
Lab: 🍾 Interview Week 🎉
Monday
November 17
The State Pattern - Slides
Wednesday
November 19
The State Pattern - Slides
Friday
November 21
The State Pattern - Slides
Friday, November 21 @ 11:59pm
Task 4: Problem Set Deadline
Week 14: Review
Lab: No Lab
Monday
November 24
No Lecture
Wednesday
November 26
No Lecture
Friday
November 28
No Lecture
Week 15: Review
Lab: 2nd Chance - Coding Quiz 2 + Tracing Quiz 2 + Coding Quiz 3 + Tracing Quiz 3
Monday
December 1
Review
Wednesday
December 3
Review
Friday
December 5
Review
Friday, December 5 @ 11:59pm
Task 4: Game Features Deadline
Week 16: Final Exam
Lab: No Lab
Monday
December 8
No Lecture
Friday
December 12
Final Exam: 7:15PM - 10:15PM

Website GitHub Website GitHub