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:
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 objectives to earn a passing grade in this class. To complete all learning objectives, you must complete a total of 6 memory diagram quizzes and 8 programming assignments.
To complete the learning objectives of this course, you must complete all of the following requirements.
Learning Objective Requirements Completed | Grade |
---|---|
All 8 Programming Tasks and all 6 Quizzes | Grade depends on the number of Application Objectives completed |
Less Than All Programming Tasks and Quizzes | 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 |
---|---|
8-10 | A |
7 | A- |
6 | B+ |
5 | B |
4 | B- |
3 | C+ |
2 | C |
1 | C- |
0 or 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 in a timely manner. The objectives are primarily designed to encourage you to keep up with the material in this very fast-paced course. You will have the following opportunities to complete application objectives.
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.
Tuesday May 30 |
Course IntroductionIntroduction to Java - SlidesJava Loops and Conditionals - Slides |
Programming Task 1 | ||
Thursday June 1 |
Java Data Structures - SlidesUnit Testing - SlidesTesting and Recursive - Slides |
Programming Task 2 | ||
Tuesday June 6 |
Classes and Objects - SlidesClasses and Objects - SlidesTesting Classes and Examples - Slides |
Programming Task 3 | ||
Thursday, June 8 @ 9:00 AM Programming Task 1 Expected Deadline |
||
Thursday June 8 |
Linked List Structure - SlidesLinked List Algorithms - SlidesStack and Queue - Slides |
Tuesday, June 13 @ 9:00 AM Programming Task 2 Expected Deadline |
||
Tuesday, June 13 @ 11:00 AM Classes 1 && Data Structures 1 Quizzes |
||
Tuesday June 13 |
Testing with StructureTesting Linked Lists and TreesThe Debugger |
Thursday, June 15 @ 9:00 AM Programming Task 3 Expected Deadline |
||
Thursday June 15 |
Inheritance - SlidesInheritance and Override - SlidesSorting with Comparators - Slides |
Tuesday June 20 |
Binary Trees and Traversals - SlidesBinary Search Trees (BSTs) - SlidesBinary Tree Examples |
Thursday, June 22 @ 9:00 AM Programming Task 4 Expected Deadline |
||
Thursday, June 22 @ 11:00 AM Classes 2 && Data Structures 2 Quizzes |
||
Thursday June 22 |
Files and Exceptions - SlidesTesting With Files |
Tuesday, June 27 @ 9:00 AM Programming Task 5 Expected Deadline |
||
Tuesday June 27 |
Polymorphism - SlidesAbstract Classes and Interfaces - SlidesPolymorphism Example |
Thursday, June 29 @ 9:00 AM Programming Task 6 Expected Deadline |
||
Thursday June 29 |
Graphs - SlidesGraph with BFS - SlidesGraph Examples - Slides |
Thursday, July 4 @ 9:00 AM Programming Task 7 Expected Deadline |
||
Tuesday, July 4 @ 11:00 AM Classes 3 && Data Structures 3 Quizzes |
||
Tuesday July 4 |
Testing Tips and Debugging |
Thursday, July 6 @ 9:00 AM Programming Task 8 Expected Deadline |
||
Tuesday, June 13 @ 11:00 AM Classes 1/2/3 && Data Structures 1/2/3 Second Chance Quizzes |
||
Friday, July 7 @ 11:59 PM All Programming Task Actual Deadlines |