You know 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. So what's next?
Writing large programs
You will learn how to write and organize large pieces of software. To this end, in CSE116 you will study:
While studying these topics we will have a focus on how your programs work, not just that they work.
This is not an easy course! To do well in this course you are expected to:
* 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 should expect to spend 40+ hours in a single week on this course alone if you fall behind or if you're not comfortable with the CSE115 material.
If you did not take CSE115 at UB, or would otherwise like to review the material, below are some CSE115 resources to help you get caught up:
Keep in mind that you must understand the concepts of CSE115 and be prepared to apply them to the syntax of a new language (Java). You will not be required to write Python in CSE116.
Specifically, you are expected to understand the concepts of variables, expressions, functions, conditionals, loops, and reading CSV files.
Being successful in CSE116 requires completion of all of the learning objective requirements. You must complete every Learning Objective requirement in order to pass CSE116.
Learning objectives are divided into 2 primary categories:
Instead of writing programs as a collection of variables and functions, with objectoriented programming we will group these variables and functions into classes and objects. This allows developers to reason about their programs at a higher level of abstraction.
A student has completed this objective if they are able to:
We will study several new approaches for storing data and computing with that data. Primarily, we will see linkedlists, trees, and graphs while exploring applications of each data structure.
A student has completed this objective if they are able to:
To complete the learning objectives of this course, you must complete all of the following requirements.
Final Exam: The final exam is used as a 3rd chance to complete the quizzes and interviews. If you already completed all 6 quizzes and 6 interviews after the first 2 attempts for each, you do not need to attend the final exam.
Learning Objective Requirements Completed  Grade 

All 8 Programming Tasks, all 6 Quizzes, and all 6 Interviews  Grade depends on the number of Application Objectives completed 
Less than all Programming Tasks, all Quizzes, and all Interviews  F 
If you have completed all of the learning objectives, your grade will be determined by the number of application objectives you've completed. Most application objectives are designed to incentivize you to keep up with the material of the course and are not meant to be overly difficult to earn. Your final letter grade will be determined as follows:
Application Objectives Completed  Grade 

4447  A 
4143  A 
3840  B+ 
3537  B 
3234  B 
2531  C+ 
1824  C 
1117  C 
510  D+ 
04  D 
Falling even 1 week behind in this course will significantly increase your chances of failing. Application Objectives offer you incentives to stay uptodate on the material by giving you chances to improve your letter grade.
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.
CSE Department Academic Integrity Policy:
https://engineering.buffalo.edu/computerscienceengineering/informationforstudents/undergraduateprogram/cseundergraduateacademicpolicies/cseacademicintegritypolicy.html
UB Academic Integrity Policy:
https://catalog.buffalo.edu/policies/integrity.html
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:
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. I will not entertain excuses after you have been caught.
Examples of acceptable behavior:
Examples of unacceptable behavior:
If you plan on cheating, plan on taking this course again.
Lab: No Lab  
Wednesday January 24 
Course Introduction 

Friday January 26 
Introduction to Java  Slides 
Programming Task 1: Unit Testing  
Lab: Practice Quiz and Interview  
Monday February 5 
Unit Testing  Slides 

Wednesday February 7 
Testing Strings/doubles  Slides 

Friday February 9 
Testing and Recursion  Slides 
Programming Task 2: Classes  
Lab: Practice Quiz and Interview  
Monday February 12 
Classes and Objects  Slides 

Wednesday February 14 
Classes and Objects  Slides 

Friday February 16 
Testing Classes and Examples  Slides 

Friday, February 16 @ 11:59pm Task 1: Expected Deadline 
Programming Task 3: Linked Lists  
Lab: 1st Chance  Classes Interview & Quiz  
Monday February 19 
Linked List Structure  Slides 

Wednesday February 21 
Linked List Algorithms  Slides 

Friday February 23 
Stack and Queue  Slides 

Friday, February 23 @ 11:59pm Task 2: Expected Deadline 

Friday, February 23 @ 11:59pm Task 1: Late Deadline 
Lab: 1st Chance  Linked List Interview & Quiz  
Monday February 26 
Testing Tips 

Wednesday February 28 
Testing Data Structures 

Friday March 1 
Debugger and Testing 

Friday, March 1 @ 11:59pm Task 3: Expected Deadline 

Friday, March 1 @ 11:59pm Task 2: Late Deadline 

Friday, March 1 @ 11:59pm Task 1: Final Deadline 
Programming Task 4: Inheritance  
Lab: 2nd Chance  Classes/Linked List Interviews & Quizzes  
Monday March 4 
Inheritance  Slides 

Wednesday March 6 
Inheritance and Override  Slides 

Friday March 8 
Sorting with Comparators  Slides 

Friday, March 8 @ 11:59pm Task 3: Late Deadline 

Friday, March 8 @ 11:59pm Task 2: Final Deadline 
Programming Task 5: Trees  
Lab: 1st Chance  Inheritance Interview & Quiz  
Monday March 11 
Binary Trees and Traversals  Slides 

Wednesday March 13 
Binary Search Trees (BSTs)  Slides 

Friday March 15 
Binary Tree Examples 

Friday, March 15 @ 11:59pm Task 4: Expected Deadline 

Friday, March 15 @ 11:59pm Task 3: Final Deadline 
Lab: No Lab  
Monday March 18 
No Lecture 

Wednesday March 20 
No Lecture 

Friday March 22 
No Lecture 
Programming Task 6: Files  
Lab: 1st Chance  Trees Interview & Quiz  
Monday March 25 
Files and Exceptions  Slides 

Wednesday March 27 
Testing With Files 

Friday March 29 
Debugger Tips 

Friday, March 29 @ 11:59pm Task 5: Expected Deadline 

Friday, March 29 @ 11:59pm Task 4: Late Deadline 
Programming Task 7: Polymorphism  
Lab: 2nd Chance  Inheritance/Trees Interviews & Quizzes  
Monday April 1 
Polymorphism  Slides 

Wednesday April 3 
Polymorphism  Slides 

Friday April 5 
Polymorphism Example 

Friday, April 5 @ 11:59pm Task 6: Expected Deadline 

Friday, April 5 @ 11:59pm Task 5: Late Deadline 

Friday, April 5 @ 11:59pm Task 4: Final Deadline 
Programming Task 8: Graphs  
Lab: 1st Chance  Polymorphism Interview & Quiz  
Monday April 8 
Eclipse Day  No live lecture or lab [Watch the Lecture Video Below]  Slides 

Wednesday April 10 
Graph with BFS  Slides 

Friday April 12 
Graph Examples  Slides 

Friday, April 12 @ 11:59pm Task 7: Expected Deadline 

Friday, April 12 @ 11:59pm Task 6: Late Deadline 

Friday, April 12 @ 11:59pm Task 5: Final Deadline 
Application Objective Task 1  
Lab: 1st Chance  Graphs Interview & Quiz  
Monday April 15 
The State Pattern  Slides 

Wednesday April 17 
The State Pattern  Slides 

Friday April 19 
The State Pattern  Slides 

Friday, April 19 @ 11:59pm Task 8: Expected Deadline 

Friday, April 19 @ 11:59pm Task 7: Late Deadline 

Friday, April 19 @ 11:59pm Task 6: Final Deadline 
Application Objective Task 2  
Lab: 2nd Chance  Polymorphism/Graphs Interviews & Quizzes  
Monday April 22 
Weighted Graphs 

Wednesday April 24 
Weighted Graphs 

Friday April 26 
Merge Sort 

Friday, April 26 @ 11:59pm Task 8: Late Deadline 

Friday, April 26 @ 11:59pm Task 7: Final Deadline 

Friday, April 26 @ 11:59pm Application Objective Task 1: Final Deadline 
Lab: Review  
Monday April 29 
Classes in Python 

Wednesday May 1 
Review 

Friday May 3 
TA Lecture: WTF to do with a CSE Degree 

Friday, May 3 @ 11:59pm Task 8: Final Deadline 

Friday, May 3 @ 11:59pm Application Objective Task 2: Final Deadline 
Lab: Review  
Monday May 6 
Review 

Friday May 10 @ 11:45am  2:45pm 
Final Exam 