Ask questions and find office
hours
Code examples in lecture
slides
Section A live code (Paul's section)
Section E live code (Paul's section)
UBPower - Memory Diagram Tracing Tool
Tracing Tool Demo Videos
Memory Diagram Reference
Watch this semester's lectures
Watch past lectures
Chat with other students
You know the basics of programming: Expressions, variables, functions, control flow, data structures, and memory. With these concepts, you can train a computer to complete nearly any task you can imagine. The next step is to use these skills in more efficient ways to write better software.
In this course, you will learn:
This is not an easy course! To do well in this course you are expected to:
* If you do not have a strong understanding of the basics of programming, you will need to spend much more than 12 hours/week in order to pass this course.
There are 10 learning objectives that must be completed in order to pass the course. Learning the material assessed by these objectives is the reason why someone would register for CSE116. This grading structure ensures that you receive the educational value you deserve.
All 10 learning objectives will be graded on a pass/fail (or complete/incomplete) basis. If you complete 0-9 of these learning objectives, you will earn an F in this course. You must check off all 10 objectives. Below is a brief explanation of each type of learning objective assessment.
We want to ensure that you have a firm understanding of the syllabus, and check how prepared you are to begin this course. Your performance on the CSE115 final exam will not affect your grade, but you must take it. Anyone who is unable to attend the exam will be given a makeup opportunity.
You need to be able to read before you can write. You will trace through everything that happens in stack and heap memory as a given program executes. Tracing quizzes will take place in lab and will be completed using the tracing tool, UBPower.
You will write a significant amount of code as take-home assignments. The coding quizzes will ensure that you are capable of writing small programs in a timed environment without access to any resources. The intention is for these quizzes to be very easy if you understand what you wrote for the take-home programming assignments.
Communication is critical. The interviews will ensure that you are able to carry on a technical conversation about the course topics.
Your interviewing TA does not decide if you completed the learning objective. Your interviewing TA will transcribe the interview which will be reviewed by a separate grading team. Do not pressure your interviewing TA into marking you for completion.
You will be given 3 opportunities to complete each of the 9 lab learning objectives (3 Tracing quizzes, 3 coding quizzes, and 3 interviews). Each has a lab and a makeup lab listed on the schedule below. If you do not complete all 9 lab learning objectives in their first 2 attempts, you will have a third opportunity to complete them on the final exam. Making up lab learning objectives is the only purpose of the final exam.
Clarifications:
If you complete your learning objective checklist, your grade will depend on the number of points you've earned.
| Course Activity | Points |
|---|---|
| Lab Activities | 150 |
| Lecture Questions | 50 |
| 5 Problem Sets (50 pts each) | 250 |
| 5 Game Feature Assignments (100 points each) | 500 |
| State Pattern Assignment | 50 |
| Total | 1000 |
Every activity in lab that is not a learning objective is considered to be a lab activity. This includes the quizzes and interview 0 which will cover java basics and serve as practice for these types of assessment. Several lab activities will give you a chance to build simple circuits and are labeled as hardware activities on the schedule.
There are 7 activities worth 25 points each. Your total amount of lab activity points is capped at 150 to allow for one missed, or poorly performed, lab without consequence.
Note that some labs contain both a learning objective assessment and an activity.
Most lectures will contain a TopHat question worth 2 points (1 point for participation and 1 point for correctness). Your total lecture question points are capped at 50 and there will be many more than 50 points available allowing for mistakes, login issues, sickness, etc without consequence.
Problem sets and game features are take-home programming assignments that are submitted to AutoLab. You have an unlimited number of submissions on these assignments. All deadlines are listed on the course schedule below.
Problem sets will contain a variety of small programming problems, while game features will have you adding features to a large provided code base. Game features will give you practice working with a large complex codebase. Being able to work on a large project like this is the primary goal of the course and the problem sets are intended to ease you into such a task.
Late Policy: You may submit any problem set or game feature assignment late at a penalty of 10% per day late (additive). Note that whether you are 5 minutes or 23 hours late, it is still considered 1 day late. If the deadline is February 6 and you submit at any time on February 8, it is considered 2 days late for a penalty of 20% off your earned points.
Some of the game features assignments will build on each other. It is not recommended to skip any of the game feature assignments. Use the late policy if you are struggling, but don't skip an entire assignment since you might still have to complete it as you start the next assignment.
You must complete all 10 learning objectives to pass this class. Here's a chart to make that abundantly clear:
| Learning Objectives Complete | Grade |
|---|---|
| 10 | Grade depends on the number of points earned |
| 0-9 | F |
If you complete all 10 learning objectives:
| Points | Grade |
|---|---|
| 925 - 1000 | A |
| 900 - 924 | A- |
| 875 - 899 | B+ |
| 850 - 874 | B |
| 825 - 849 | B- |
| 800 - 824 | C+ |
| 750 - 799 | C |
| 700 - 749 | C- |
| 650 - 699 | D |
| 0 - 649 -or- <10 LOs | F |
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
In addition to the department and university policies, the following apply to this course:
All violations will result in:
Examples of acceptable behavior:
Examples of unacceptable behavior:
Any student may be challenged by the course staff at any time to prove that they did create the code they submitted for course credit. They must be able to explain their code and walk through their thought process as they wrote the code. The method of proof can vary and is left for the course staff to decide. If the student fails to convince the course staff that they created all the code they submitted for course credit, they will be found in violation of this academic integrity policy. Please note that if a student is in violation of any other part of this policy, it is still a violation even if they can prove that they were the creator of their code (Ex. If they did write their code, but helped someone else cheat).
If challenged, the following excuses are not acceptable:
If you plan on cheating, plan on taking this course again.
| Lab: No Lab | ||
| Wednesday January 21 |
Course Introduction |
|
| Friday January 23 |
CSE 115 Final Exam |
|
| Lab: Basics Circuits Activity (Hardware) | ||
| Problem Set 0: Java Basics | ||
| Game Features 0: Java Basics | ||
| Monday January 26 |
Introduction to Java - Slides |
|
| Wednesday January 28 |
Java: Loops and Conditionals - Slides |
|
| Friday January 30 |
Java: Data Structures - Slides |
|
| Friday - async January 30 |
Java: Memory + Reading Files + CSV Parsing [async lecture] - Slides |
|
| Lab: Interview 0 + Debugging Activity (Software) | ||
| Problem Set 1: Classes | ||
| Game Features 1: Classes | ||
| Monday February 9 |
Logic Gates and Memory |
|
| Wednesday February 11 |
Arrays, ArrayList, and Big-O runtime |
|
| Friday February 13 |
Recursion with ArrayList |
|
| Friday, February 13 @ 11:59pm Game Features 0 Deadline |
||
| Lab: Tracing Quiz 1 + Coding Quiz 1 | ||
| Problem Set 2: Linked Lists + Inheritance | ||
| Game Features 2: Linked Lists + Inheritance | ||
| Monday February 23 |
Inheritance - Slides |
|
| Wednesday February 25 |
Inheritance and Override - Slides |
|
| Friday February 27 |
Abstract Classes and Interfaces - Slides |
|
| Friday, February 27 @ 11:59pm Game Features 1 Deadline |
||
| Lab: No Lab | ||
| Monday March 16 |
No Lecture |
|
| Wednesday March 18 |
No Lecture |
|
| Friday March 20 |
No Lecture |
|
| Lab: Interview 2 + Documentation Activity (Software) | ||
| Monday March 30 |
Runtime Examples |
|
| Wednesday April 1 |
Tail Recursion |
|
| Friday April 3 |
Heap Memory Details |
|
| Friday, April 3 @ 11:59pm Problem Set 3 Deadline |
||
| Lab: Interview 3 + Two-Bit Memory Activity (Hardware) | ||
| State Pattern Assignment | ||
| Monday April 20 |
Design Patterns |
|
| Wednesday April 22 |
GUIs |
|
| Friday April 24 |
MVC |
|
| Friday, April 24 @ 11:59pm Game Features 4 Deadline |
||
| Lab: Makeup 3 - Tracing Quiz 3, Coding Quiz 3, Interview 3 | ||
| Monday April 27 |
Introduction to C |
|
| Wednesday April 29 |
Microcontrollers |
|
| Friday May 1 |
Microcontrollers |
|
| Friday, May 1 @ 11:59pm Calculator Deadline |
||
| Lab: No Lab | ||
| Monday May 4 |
Review |
|
| Wednesday May 13 |
Final Exam: 11:45AM - 2:45PM Cooke 121 |
|
Website GitHub