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 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 all 3 quizzes and 3 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, 3 Quizzes, and 3 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 |
---|---|
30-34 | A |
26-29 | A- |
22-25 | B+ |
18-21 | B |
14-17 | B- |
10-13 | C+ |
7-9 | C |
4-6 | C- |
0-3 or did not complete all Learning Objectives | F |
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 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 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.
Lab: No Lab | ||
Monday August 28 |
Course Introduction |
|
Wednesday August 30 |
Introduction to Java - Slides |
|
Friday September 1 |
Java Loops and Conditionals - Slides |
Lab: IntelliJ Setup | ||
Monday September 4 |
No Class |
|
Wednesday September 6 |
Java Data Structures - Slides |
|
Friday September 8 |
Java Examples |
Programming Task 1: Unit Testing | ||
Lab: Memory Diagram Practice | ||
Monday September 11 |
Unit Testing - Slides |
|
Wednesday September 13 |
Testing Strings/doubles and The Debugger - Slides |
|
Friday September 15 |
Testing and Recursion - Slides |
Programming Task 2: Classes | ||
Lab: Quiz Prep | ||
Monday September 18 |
Classes and Objects - Slides |
|
Wednesday September 20 |
Classes and Objects - Slides |
|
Friday, September 22 @ 9:00 AM Programming Task 1: Expected Deadline |
||
Friday September 22 |
Testing Classes and Examples - Slides |
Programming Task 3: Linked Lists | ||
Lab: Quiz 1 - Java Basics and Classes (First Chance) | ||
Monday September 25 |
Linked List Structure - Slides |
|
Wednesday, September 27 @ 9:00 AM Programming Task 1: Late Deadline |
||
Wednesday September 27 |
Linked List Algorithms - Slides |
|
Friday, September 29 @ 9:00 AM Programming Task 2: Expected Deadline |
||
Friday September 29 |
Stack and Queue - Slides |
Programming Task 4: Inheritance | ||
Lab: Interview 1 - Java Basics and Classes (First Chance) | ||
Monday October 2 |
Inheritance - Slides |
|
Wednesday, October 4 @ 9:00 AM Programming Task 2: Late Deadline |
||
Wednesday October 4 |
Inheritance and Override - Slides |
|
Friday, October 6 @ 9:00 AM Programming Task 3: Expected Deadline |
||
Friday October 6 |
Sorting with Comparators - Slides |
No Lab | ||
Monday October 9 |
No Class |
|
Wednesday October 11 |
No Class |
|
Friday October 13 |
No Class |
Programming Task 5: Trees | ||
Lab: Quiz 1 and Interview 1 (Second Chance) | ||
Monday October 16 |
Binary Trees and Traversals - Slides |
|
Wednesday, October 18 @ 9:00 AM Programming Task 3: Late Deadline |
||
Wednesday October 18 |
Binary Search Trees (BSTs) - Slides |
|
Friday, October 20 @ 9:00 AM Programming Task 4: Expected Deadline |
||
Friday October 20 |
Binary Tree Examples |
Lab: Quiz 2 - Linked-Lists and Trees (First Chance) | ||
Monday October 23 |
Testing Tips |
|
Wednesday, October 25 @ 9:00 AM Programming Task 4: Late Deadline |
||
Wednesday October 25 |
Testing Data Structures |
|
Friday, October 27 @ 9:00 AM Programming Task 5: Expected Deadline |
||
Friday October 27 |
Debugger and Testing |
Programming Task 6: Reading Files | ||
Lab: Interview 2 - Linked-Lists and Trees (First Chance) | ||
Monday October 30 |
Files and Exceptions - Slides |
|
Wednesday, November 1 @ 9:00 AM Programming Task 5: Late Deadline |
||
Wednesday November 1 |
Testing With Files |
|
Friday November 3 |
Debugger 2 |
Programming Task 7: Polymorphism | ||
Lab: Quiz 2 and Interview 2 (Second Chance) | ||
Monday November 6 |
Polymorphism - Slides |
|
Wednesday November 8 |
Polymorphism - Slides |
|
Friday, November 10 @ 9:00 AM Programming Task 6: Expected Deadline |
||
Friday November 10 |
Polymorphism Example |
Programming Task 8: Graphs | ||
Lab: Quiz 3 - Inheritance and Polymorphism (First Chance) | ||
Monday November 13 |
Graphs - Slides |
|
Wednesday, November 15 @ 9:00 AM Programming Task 6: Late Deadline |
||
Wednesday November 15 |
Graph with BFS - Slides |
|
Friday, November 17 @ 9:00 AM Programming Task 7: Expected Deadline |
||
Friday November 17 |
Graph Examples - Slides |
Monday November 20 |
No Class |
Wednesday November 22 |
No Class |
Friday November 24 |
No Class |
Application Objective Task: The State Pattern | ||
Lab: Interview 3 - Inheritance and Polymorphism (First Chance) | ||
Monday November 27 |
State Pattern - Slides |
|
Wednesday, November 29 @ 9:00 AM Programming Task 7: Late Deadline |
||
Wednesday November 29 |
State Pattern - Slides |
|
Friday, December 1 @ 9:00 AM Programming Task 8: Expected Deadline |
||
Friday December 1 |
State Pattern - Slides |
Lab: Quiz 3 and Interview 3 (Second Chance) | ||
Monday December 4 |
Review |
|
Wednesday, December 6 @ 9:00 AM Programming Task 8: Late Deadline |
||
Wednesday December 6 |
git / GitHub |
|
Friday December 8 |
Review |
Lab: No Lab | ||
Monday December 11 |
No Class - Prepare for Exams |
|
Monday, December 11 @ 11:59 PM All Programming Tasks: Final Deadline |
||
Monday, December 11 @ 11:59 PM Application Objective Task: Deadline |
||
Friday December 15 |
Final Exam @ 11:45AM - 2:45PM [Norton 190] |