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 or JavaScript in CSE116.
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 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:
You must demonstrate that you've completed all learning objective requirements to earn a passing grade in this class. To complete a learning objective, you must complete all 4 portions (read, explain, test, write) of that category.
To complete the learning objectives of this course, you must complete all of the following requirements.
Recovery Opportunities: The grading policy, at least at first glance, is very harsh. If you miss any learning objective requirement, you fail the course. In reality, we understand that life happens. You might get sick, your car might break down on your way to lab, or you might have 4 midterms in 1 week and not have time to work on CSE116. To address this, the course already has 2 opportunities for each quiz and interview, and the deadline for each programming task has been extended by 1 week from the expected/reasonable deadline to effectively give you 2 chances for each requirement. For cases when 2 opportunities are not enough, you can use recovery opportunities.
You have 4 recovery opportunities to use throughout the semester which can be used to earn another opportunity to complete a quiz, interview, or programming task. If you use a recovery opportunity for a Quiz or Interview, you can take the Quiz/Interview in lab the week after the second chance lab (Labelled "Recovery opportunity" on the course schedule. If you use a second recovery opportunity on a quiz or interview, we will schedule a makeup quiz or interview for you at a time outside of lab. If you use a recovery opportunity on a programming task, you will be given an additional 1-week extension on that task.
Recovery opportunities cannot be used to extend the deadline of application objectives, nor to earn another chance for the quiz application objectives..
Learning Objective Requirements Completed | Grade |
---|---|
All Programming Tasks, Quizzes, and Interviews | Grade depends on the number of Application Objectives completed |
Less Than All Programming Tasks, Quizzes, and 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. Your final letter grade will be determined as follows:
Application Objectives Completed | Grade |
---|---|
15-17 | A |
14 | A- |
13 | B+ |
11-12 | B |
9-10 | B- |
7-8 | C+ |
5-6 | C |
3-4 | C- |
0-2 | D+ |
0+, but did not complete all Learning Objectives | F |
You can improve your letter grade by showing that you can apply the learning objectives to solve real-world problems. You will have the following opportunities to complete application objectives.
There's a lot to keep track of with the Learning Objectives and Application objectives. This chart shows a summary of when you ar e expected to earn each objective.
Week | Quiz | Interview | Programming Task | Expected Deadline | Lecture Question |
---|---|---|---|---|---|
1 | 2 | ||||
2 | 3 | ||||
3 | LO | 1 | 3 | ||
4 | LO+AO | LO | LO | 1 | 3 |
5 | LO+AO | LO | LO | 1 | 3 |
6 | LO | 1 | 3 | ||
7 | LO+AO | LO | LO | 1 | 3 |
Break | |||||
8 | LO+AO | LO | LO | 1 | 3 |
9 | LO | 1 | 3 | ||
10 | LO+AO | LO | LO | 1 | 3 |
11 | LO+AO | LO | LO | 1 | 3 |
12 | 2 AO | 3 | |||
13 | 2 AO | 3 | |||
14 | 2 AO | 3 | |||
Total | 6 LO + 6 AO | 6 LO | 9 LO + 6 AO | 3 AO | 2 AO |
Expected Deadlines Met | Application Objectives Earned |
---|---|
7-9 | 3 |
5-6 | 2 |
2-4 | 1 |
0-1 | 0 |
Lecture Questions Answered Correctly | Application Objectives Earned |
---|---|
33-41 (>=80%) | 2 |
25-32 (>=60% && <80%) | 1 |
0-24 (<60%) | 0 |
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 courses 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.
Programming Task 1: Testing 1 | ||
Lab: No Lab | ||
Monday January 30 |
Course Introduction |
|
Wednesday February 1 |
Introduction to Java - Slides |
|
Friday February 3 |
Java Loops and Conditionals - Slides |
Finish Programming Task 1: Testing 1 | ||
Lab: IntelliJ Setup | ||
Monday February 6 |
Java Data Structures - Slides |
|
Wednesday February 8 |
Unit Testing - Slides |
|
Friday February 10 |
Testing and Recursive - Slides |
Programming Task 2: Classes 1 | ||
Lab: Memory Diagrams Practice | ||
Monday February 13 |
Classes and Objects - Slides |
|
Wednesday, February 15 @ 9:00 AM Programming Task 1: Testing 1 Expected Deadline |
||
Wednesday February 15 |
Classes and Objects - Slides |
|
Friday February 17 |
Testing Classes and Examples - Slides |
Programming Task 3: Data Structures 1 | ||
Lab: Quiz and Interview Classes 1 (First Chance) |
||
Monday February 20 |
Linked List Structure - Slides |
|
Wednesday, February 22 @ 9:00 AM Programming Task 1: Testing 1 Deadline |
||
Wednesday, February 22 @ 9:00 AM Programming Task 2: Classes 1 Expected Deadline |
||
Wednesday February 22 |
Linked List Algorithms - Slides |
|
Friday February 24 |
Stack and Queue - Slides |
Programming Task 4: Testing 2 | ||
Lab: Quizzes and Interviews Data Structures 1 (First Chance) Classes 1 (Second Chance) |
||
Monday February 27 |
Testing with Structure |
|
Wednesday March 1 |
Testing Linked Lists and Trees |
|
Friday, March 3 @ 9:00 AM Programming Task 2: Classes 1 Deadline |
||
Friday, March 3 @ 9:00 AM Programming Task 3: Data Structures 1 Expected Deadline |
||
Friday March 3 |
The Debugger |
Programming Task 5: Classes 2 | ||
Lab: Quizzes and Interviews Data Structures 1 (Second Chance) Classes 1 (Recovery Opportunity) |
||
Monday March 6 |
Inheritance - Slides |
|
Wednesday, March 8 @ 9:00 AM Programming Task 3: Data Structures 1 Deadline |
||
Wednesday, March 8 @ 9:00 AM Programming Task 4: Testing 2 Expected Deadline |
||
Wednesday March 8 |
Inheritance and Override - Slides |
|
Friday March 10 |
Sorting with Comparators - Slides |
Programming Task 6: Data Structures 2 | ||
Lab: Quizzes and Interviews Classes 2 (First Chance) Data Structures 1 (Recovery Opportunity) |
||
Monday March 13 |
Binary Trees and Traversals - Slides |
|
Wednesday, March 15 @ 9:00 AM Programming Task 4: Testing 2 Deadline |
||
Wednesday, March 15 @ 9:00 AM Programming Task 5: Classes 2 Expected Deadline |
||
Wednesday March 15 |
Binary Search Trees (BSTs) - Slides |
|
Friday March 17 |
Binary Tree Examples |
Monday March 20 |
No Class |
Wednesday March 22 |
Rest and Relax |
Friday March 24 |
Mental Health Day |
Programming Task 7: Testing 3 | ||
Lab: Quizzes and Interviews Data Structures 2 (First Chance) Classes 2 (Second Chance) |
||
Monday March 27 |
Files and Exceptions - Slides |
|
Wednesday, March 29 @ 9:00 AM Programming Task 5: Classes 2 Deadline |
||
Wednesday, March 29 @ 9:00 AM Programming Task 6: Data Structures 2 Expected Deadline |
||
Wednesday March 29 |
Testing With Files |
|
Friday March 31 |
Debugger 2 |
Programming Task 8: Classes 3 | ||
Lab: Quizzes and Interviews Data Structures 2 (Second Chance) Classes 2 (Recovery opportunity) |
||
Monday April 3 |
Polymorphism - Slides |
|
Wednesday, April 5 @ 9:00 AM Programming Task 6: Data Structures 2 Deadline |
||
Wednesday, April 5 @ 9:00 AM Programming Task 7: Testing 3 Expected Deadline |
||
Wednesday April 5 |
Abstract Classes and Interfaces - Slides |
|
Friday April 7 |
Polymorphism Example - Slides |
Programming Task 9: Data Structures 3 | ||
Lab: Quizzes and Interviews Classes 3 (First Chance) Data Structures 2 (Recovery opportunity) |
||
Monday April 10 |
Graphs - Slides |
|
Wednesday, April 12 @ 9:00 AM Programming Task 7: Testing 3 Deadline |
||
Wednesday, April 12 @ 9:00 AM Programming Task 8: Classes 3 Expected Deadline |
||
Wednesday April 12 |
Graph Examples - Slides |
|
Friday April 14 |
Breadth-First Search (BFS) - Slides |
Application Objectives 1: Testing | ||
Lab: Quizzes and Interviews Data Structures 3 (First Chance) Classes 3 (Second Chance) |
||
Monday April 17 |
Testing Tips - Slides |
|
Wednesday, April 19 @ 9:00 AM Programming Task 8: Classes 3 Deadline |
||
Wednesday, April 19 @ 9:00 AM Programming Task 9: Data Structures 3 Expected Deadline |
||
Wednesday April 19 |
Testing with Mocks - Slides |
|
Friday April 21 |
Debugger 3 - Slides |
Application Objectives 2: Classes | ||
Lab: Quizzes and Interviews Data Structures 3 (Second Chance) Classes 3 (Recovery opportunity) |
||
Monday April 24 |
State Pattern - Slides |
|
Wednesday, April 26 @ 9:00 AM Programming Task 9: Data Structures 3 Deadline |
||
Wednesday, April 26 @ 9:00 AM Application Objectives 1: Testing Deadline |
||
Wednesday April 26 |
State Pattern - Slides |
|
Friday April 28 |
State Pattern - Slides |
Application Objectives 3: Data Structures | ||
Lab: Quiz and Interview Data Structures 3 (Recovery opportunity) |
||
Monday May 1 |
Weighted Graphs - Slides |
|
Wednesday, May 3 @ 9:00 AM Application Objectives 2: Classes Deadline |
||
Wednesday May 3 |
Data Structures - Slides |
|
Friday May 5 |
Merge Sort - Slides |
Lab: Review | ||
Monday May 8 |
TA Lecture - Slides |
|
Wednesday, May 10 @ 9:00 AM Application Objectives 3: Data Structures Deadline |
||
Wednesday May 10 |
OOP in Python - Slides |
|
Friday May 12 |
You Decide - Slides |
|
Friday May 19 |
Final Exam @ 11:45AM - 2:45PM [Check the Hub to find the room for your section] |