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/lecture in order to pass this course.
There are 2 learning objectives that must be completed in order to pass the course.
Both learning objectives will be graded on a pass/fail (or complete/incomplete) basis. If you do not complete both of these learning objectives, you will earn an F in this course. All completion decisions will be made by a human after reviewing your submission. You do not have to be perfect to pass a trace, but you must accurately demonstrate the relevant concepts (eg. Making a math error is usually fine. Forgetting your super constructor calls is not.)
The purpose of these traces is to give you practice reading code. You will trace through everything that happens in stack and heap memory as a given program executes. Traces will take place during the midterm and final exams and will be completed using the tracing tool.
Both the midterm and final exam will consists of 2 traces for each of OOP and Data Structures (4 total traces per exam). You must pass at least 1 trace to complete a learning objective. If you pass a trace on the midterm, you do not have to retake it on the final exam. If you pass complete both learning objectives on the midterm, you do not have to take the final exam.
To clarify: The midterm and final with both contain 2 programs to trace for each learning objective. This means that for each learning objective (OOP and Data Structures) you will have a total 4 opportunities to complete a corresponding trace. If you pass any of the 4 traces, you will have completed that learning objective (Meaning that there are 8 total traces that you can complete. You must pass 1 OOP trace and 1 Data Structures trace to pass the course.)
If you complete both learning objectives, your grade will depend on the number of points you've earned on the programming problem sets.
| Course Activity | Points |
|---|---|
| 5 Problem Sets (50 pts each) | 250 |
Problem sets 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.
Late Policy: You may submit any problem set late at a penalty of 20% 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 June 4 and you submit at any time on June 6, it is considered 2 days late for a penalty of 40% off your earned points.
You must complete both learning objectives to pass this class. Here's a chart to make that abundantly clear:
| Learning Objectives Complete | Grade |
|---|---|
| 2 | Grade depends on the number of points earned |
| 0 or 1 | F |
If you complete both learning objectives, your grade depends on the number of problem set points you've earned:
| Points | Grade |
|---|---|
| 230 - 250 | A |
| 220 - 229 | A- |
| 210 - 219 | B+ |
| 200 - 209 | B |
| 190 - 199 | B- |
| 180 - 189 | C+ |
| 165 - 179 | C |
| 150 - 164 | C- |
| 0 - 149 -or- <2 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.
| Tuesday June 23 |
Midterm Exam - 11:00AM - 1:30PM EST |
| Tuesday June 30 |
Runtime Examples (Async Lecture. No live stream) |
| Tuesday July 2 |
Final Exam - 11:00AM - 1:30PM EST |
|
| Thursday, July 2 @ 11:59pm Problem Set 4 Deadline |
||
Website GitHub