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 can expect to spend 40+ hours in a single week on this course alone if you fall behind or if you have not mastered the basics of programming
Being successful in CSE116 requires completion of all of the learning objective requirements.
Learning objectives are divided into 2 primary categories:
Instead of writing programs as a collection of variables and functions, with object-oriented 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 linked-lists, 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 both quizzes and all 4 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, both Quizzes, and all 4 Interviews | Grade depends on the number of Application Objectives completed |
Less than all Programming Tasks, both 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 |
---|---|
30-33 | A |
27-29 | A- |
24-26 | B+ |
21-23 | B |
18-20 | B- |
15-17 | C+ |
12-14 | C |
9-11 | C- |
5-8 | D+ |
0-4 | D |
Falling even 1 week behind in this course will significantly increase your chances of failing. Application Objectives offer you incentives to stay up-to-date 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/computer-science-engineering/information-for-students/undergraduate-program/cse-undergraduate-academic-policies/cse-academic-integrity-policy.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 | ||
Monday September 2 |
No Lecture |
|
Wednesday September 4 |
Java Data Structures - Slides |
|
Friday September 6 |
Java Examples + IntelliJ and GitHub Demo |
Programming Task 1: Unit Testing | ||
Lab: Practice Quiz + IntelliJ Setup | ||
Monday September 9 |
Unit Testing - Slides |
|
Wednesday September 11 |
Testing Strings/doubles - Slides |
|
Friday September 13 |
Testing and Recursion - Slides |
Programming Task 2: Classes | ||
Lab: Practice Interview | ||
Monday September 16 |
Classes and Objects - Slides |
|
Wednesday September 18 |
Classes and Objects - Slides |
|
Friday September 20 |
Testing Classes and Examples - Slides |
|
Friday, September 20 @ 11:59pm Task 1: Expected Deadline |
Programming Task 3: Linked Lists | ||
Lab: 1st Chance - Interview 1 (Classes) | ||
Monday September 23 |
Linked List Structure - Slides |
|
Wednesday September 25 |
Linked List Algorithms - Slides |
|
Friday September 27 |
Stack and Queue - Slides |
|
Friday, September 27 @ 11:59pm Task 2: Expected Deadline |
||
Friday, September 27 @ 11:59pm Task 1: Late Deadline |
Lab: 1st Chance - Interview 2 (Linked List) && Debugging Activity | ||
Monday September 30 |
Testing Tips |
|
Wednesday October 2 |
Testing Data Structures |
|
Friday October 4 |
Debugger and Testing |
|
Friday, October 4 @ 11:59pm Task 3: Expected Deadline |
||
Friday, October 4 @ 11:59pm Task 2: Late Deadline |
||
Friday, October 4 @ 11:59pm Task 1: Final Deadline |
Programming Task 4: Inheritance | ||
Lab: 2nd Chance - Interview 1 && Debugger Activity | ||
Monday October 7 |
Inheritance - Slides |
|
Wednesday October 9 |
Inheritance and Override - Slides |
|
Friday October 11 |
Sorting with Comparators - Slides |
|
Friday, October 11 @ 11:59pm Task 3: Late Deadline |
||
Friday, October 11 @ 11:59pm Task 2: Final Deadline |
Lab: No Lab | ||
Monday October 14 |
No Lecture - Fall Break 1 |
|
Wednesday October 16 |
Catch Up Day |
|
Friday October 18 |
Catch Up Day |
Programming Task 5: Trees | ||
Lab: 2nd Chance - Interview 2 && Linked List Practice Quiz | ||
Monday October 21 |
Binary Trees and Traversals - Slides |
|
Wednesday October 23 |
Binary Search Trees (BSTs) - Slides |
|
Friday October 25 |
Binary Tree Examples |
|
Friday, October 25 @ 11:59pm Task 4: Expected Deadline |
||
Friday, October 25 @ 11:59pm Task 3: Final Deadline |
Programming Task 6: Files | ||
Lab: 1st Chance - Interview 3 (Trees) && Trees Practice Quiz | ||
Monday October 28 |
Files and Exceptions - Slides |
|
Wednesday October 30 |
Testing With Files |
|
Friday November 1 |
Debugger Tips |
|
Friday, November 1 @ 11:59pm Task 5: Expected Deadline |
||
Friday, November 1 @ 11:59pm Task 4: Late Deadline |
Programming Task 7: Polymorphism | ||
Lab: 1st Chance - Quiz 1 (Data Structures) && OOP Quiz Review | ||
Monday November 4 |
Polymorphism - Slides |
|
Wednesday November 6 |
Polymorphism - Slides |
|
Friday November 8 |
Polymorphism Example |
|
Friday, November 8 @ 11:59pm Task 6: Expected Deadline |
||
Friday, November 8 @ 11:59pm Task 5: Late Deadline |
||
Friday, November 8 @ 11:59pm Task 4: Final Deadline |
Programming Task 8: Graphs | ||
Lab: 1st Chance - Interview 4 (Inheritance & Polymorphism) & Quiz 2 (OOP) | ||
Monday November 11 |
Graphs - Slides |
|
Wednesday November 13 |
Graph with BFS - Slides |
|
Friday November 15 |
Graph Examples - Slides |
|
Friday, November 15 @ 11:59pm Task 7: Expected Deadline |
||
Friday, November 15 @ 11:59pm Task 6: Late Deadline |
||
Friday, November 15 @ 11:59pm Task 5: Final Deadline |
Application Objective Task | ||
Lab: 2nd Chance - Interview 3 & Quiz 1 | ||
Monday November 18 |
The State Pattern - Slides |
|
Wednesday November 20 |
The State Pattern - Slides |
|
Friday November 22 |
The State Pattern - Slides |
|
Friday, November 22 @ 11:59pm Task 8: Expected Deadline |
||
Friday, November 22 @ 11:59pm Task 7: Late Deadline |
||
Friday, November 22 @ 11:59pm Task 6: Final Deadline |
Lab: No Lab | ||
Monday November 25 |
Catch Up Day |
|
Wednesday November 27 |
No Lecture - Fall Break 2 |
|
Friday November 29 |
No Lecture - Fall Break 2 |
Lab: 2nd Chance - Interview 4 & Quiz 2 | ||
Monday December 2 |
Review |
|
Wednesday December 4 |
Review |
|
Friday December 6 |
Review |
|
Friday, December 6 @ 11:59pm Task 8: Late Deadline |
||
Friday, December 6 @ 11:59pm Task 7: Final Deadline |
||
Friday, December 6 @ 11:59pm Application Objective Task: Final Deadline |
Lab: No Lab | ||
Monday December 9 |
Catch Up Day |
|
Friday, December 13 @ 11:59pm Task 8: Final Deadline |
Lab: No Lab | ||
Monday December 16 |
Final Exam @ 11:45 - 2:45 PM |