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 if you fall behind or if you have not mastered the basics of programming
Being successful in CSE116 requires completion of all the learning objective requirements. There are 15 Learning objectives divided into 4 categories:
There are 3 Tracing Quizzes that will take place in lab that will assess your completion of learning objectives. For each quiz you will be provided with the code for a program, and you are to trace through the stack and heap memory usage throughout its execution.
These quizzes are completed in an exam environment. Accessing anything other than the quiz material in UBPower (The tracing tool) is an academic integrity violation.
There are 3 Interviews that will take place in lab that will assess your completion of learning objectives. Interviews are limited to 10 minutes where a TA will ask you a variety of questions related to the concept being assessed. To pass an interview, you must demonstrate that you can competent explain these concepts on a technical level. Simple regurgitating memorized definitions will not earn credit on these interviews. You should be able to have a conversation with another human about the concepts which is what the interviews simulate
Your interviewing TA does not make decisions for learning objective completion. Your interviewing TA will record your answers during the interview which will be reviewed by a separate grading team. Do not pressure your interviewing TA into marking you for completion
There are 3 Coding Quizzes that will take place in lab that will assess your completion of learning objectives. For these quizzes you will be given a small programming task, and you will write code to complete the task in a timed environment without access to any outside material. You will use IntelliJ to write your code and will have unlimited submission to AutoLab within the lab time.
These quizzes are completed in an exam environment. Accessing anything other than the quiz material in IntelliJ or AutoLab is an academic integrity violation.
There are 6 Coding Tasks that you'll complete outside of class time that will assess your completion of learning objectives. These tasks are where students spend most of their time working on CSE116. Through these tasks, you will gain hands-on experience applying the concepts of the course to a large project. All 6 coding tasks build on each other as you work on a project throughout the semester
All 9 of the lab learning objectives are listed on the course schedule. All of these assessments are graded on a pass/fail basis (You've either completed the learning objective or you have not). Ideally, you will complete every objective during these labs. If you don't complete an objective this lab, you will have the following opportunities to prove that you have completed the objective:
Learning Objective Requirements Completed | Grade |
---|---|
All 3 Tracing Quizzes, all 3 Interviews, all 3 Coding Quizzes, and all 6 Coding Tasks (15 Learning Objective complete) | Grade depends on the number of Effort Points earned |
Less than all Tracing Quizzes, all Interviews, all Coding Quizzes, and all Coding Tasks (0-14 Learning Objective complete) | F |
If you have completed every learning objectives, your grade will be determined by the number of effort points you've earned. These points are designed to incentivize you to keep up with the material of the course and participate in every lecture and lab. Effort points are not meant to be overly difficult to earn. Your final letter grade will be determined as follows:
Effort Points Earned | Grade |
---|---|
24-26 | A |
23 | A- |
22 | B+ |
21 | B |
20 | B- |
18-19 | C+ |
16-17 | C |
14-15 | C- |
10-13 | D |
0-9 | F |
Falling even 1 week behind in this course will significantly increase your chances of failing. Effort points offer you incentives to stay up-to-date on the material by giving you chances to improve your letter grade by showing us that you have successful study habits (eg. You show up to every lecture and lab, you start working on assignments early, and you study for your 1st attempt on every lab assessment).
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://catalogs.buffalo.edu/content.php?catoid=11&navoid=571#preamble
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. We will not entertain excuses after you have been caught.
Examples of acceptable behavior:
Examples of unacceptable behavior:
Any student may be challenged by the course staff to explain their code. If they can not explain their code in a way that convinces the course staff that they were the author of all the code they submitted for course credit, they will be found in violation of this academic integrity policy. Please note that if you are in violation of any other part of this policy, it is still a violation even if you can explain your code (eg. If you did write the code, but helped someone else cheat)
If you plan on cheating, plan on taking this course again.
Coding Task 0: Java Basics | ||
Lab: No Lab | ||
Wednesday January 22 |
Course Introduction |
|
Friday January 24 |
Introduction to Java - Slides |
Coding Task 1: Classes | ||
Lab: Interview 0 and Tracing Quiz 0 - Java Basics | ||
Monday February 10 |
Classes and Objects - Slides |
|
Wednesday February 12 |
Classes and Objects - Slides |
|
Friday February 14 |
Testing Classes and Examples - Slides |
Coding Task 2: Linked Lists | ||
Lab: Activity and Coding Quiz 0 - Java Basics | ||
Monday February 17 |
Linked List Structure - Slides |
|
Wednesday February 19 |
Linked List Algorithms - Slides |
|
Friday February 21 |
Stack and Queue - Slides |
|
Friday, February 21 @ 11:59pm Task 1: Expected Deadline |
Lab: Interview 1 and Tracing Quiz 1 - Classes | ||
Monday February 24 |
Testing Tips |
|
Wednesday February 26 |
Testing Data Structures |
|
Friday February 28 |
Debugger and Testing |
|
Friday, February 28 @ 11:59pm Task 2: Expected Deadline |
Coding Task 4: Trees | ||
Lab: 2nd Attempt for Interview 1, Tracing Quiz 1, and Coding Quiz 1 | ||
Monday March 10 |
Binary Trees and Traversals - Slides |
|
Wednesday March 12 |
Binary Search Trees (BSTs) - Slides |
|
Friday March 14 |
Binary Tree Examples |
|
Friday, March 14 @ 11:59pm Task 3: Expected Deadline |
||
Friday, March 14 @ 11:59pm Task 2: Final Deadline |
Lab: No Lab | ||
Monday March 17 |
No Lecture - Spring Break |
|
Wednesday March 19 |
No Lecture - Spring Break |
|
Friday March 21 |
No Lecture - Spring Break |
Lab: Interview 2 and Tracing Quiz 2 - Data Structures (LL and Trees) | ||
Monday March 24 |
Files and Exceptions - Slides |
|
Wednesday March 26 |
Testing With Files |
|
Friday March 28 |
Debugger Tips |
|
Friday, March 28 @ 11:59pm Task 4: Expected Deadline |
Coding Task 6: Graphs | ||
Lab: 2nd Attempt for Interview 2, Tracing Quiz 2, and Coding Quiz 2 | ||
Monday April 7 |
Graphs - Slides |
|
Wednesday April 9 |
Graph with BFS - Slides |
|
Friday April 11 |
Graph Examples - Slides |
|
Friday, April 11 @ 11:59pm Task 5: Expected Deadline |
||
Friday, April 11 @ 11:59pm Task 4: Final Deadline |
Lab: Activity and Coding Quiz 3 - OOP (Inheritance and Polymorphism) | ||
Monday April 21 |
Review |
|
Wednesday April 23 |
Review |
|
Friday April 25 |
Review |
|
Friday, April 25 @ 11:59pm Task 5: Final Deadline |
Lab: 2nd Attempt for Interview 3, Tracing Quiz 3, and Coding Quiz 3 | ||
Monday April 28 |
Review |
|
Wednesday April 30 |
Review |
|
Friday May 2 |
Review |
|
Friday, May 2 @ 11:59pm Task 6: Final Deadline |
Lab: No Lab | ||
Monday May 5 |
Make up day |
|
Monday May 12 |
Final Exam @ 7:15 - 10:15 PM |