Syllabus
Fall 2026
On this page
Instructor Information
Prof. Michael R. Nowak | Teaching Assistant Professor
Siebel School of Computing and Data Science, University of Illinois at Urbana-Champaign
- Email: [email protected]
- Office: 2338 Siebel Center for Computer Science
- Phone: +1 (217) 244-8894
- Website: michaelrnowak.com
See the Getting Help and Course Communication section of this syllabus for contact guidelines.
Course Overview
This class departs from the traditional collegiate lecture: we deliver new material through asynchronous daily lessons, each of which introduces its topic through a combination of text, video, and interactive walkthroughs. We intersperse interactive coding exercises throughout most lessons to reinforce the material as you learn it. There is no required textbook for CS 128. We post all daily lessons on this course website (cs128.org). Recitation is the required synchronous component of the course, and its format and expectations are stated under Recitation.
Learning Objectives
At the end of the course, you should be able to:
- Manage, organize, and compile C++ projects of simple complexity using basic Unix-based tools
- Use basic editing and debugging tools such as the GNU Debugger (GDB) and Valgrind
- Understand the features of computer systems that make them useful for solving problems, including computation, memory, storage, data access and networking
- Use object-oriented design to appropriately structure data and couple data and behavior
- Decompose problems of modest complexity into simpler components with well defined interfaces
- Formulate and implement useful algorithms that solve real problems
- Construct and test code from a simple specification
Meet the Professor
"Meet the Professor" sessions are informal conversations with Prof. Nowak, held some weeks in person and others virtually, with dates and times posted on the course calendar (cs128.org/calendar). They are optional, ungraded, and require no preparation; they exist so that we come to know one another. For help with course content, attend office hours.
Getting Started
Once you have read this syllabus, visit our Start Here page (cs128.org/start).
Computer Requirements
Ensure that you have a laptop that meets the College of Engineering's laptop recommendations (techzone.illinois.edu), running the Windows, Mac, or Ubuntu operating system, with the Google Chrome web browser installed. Chrome is the browser through which you will access our website.
Grading
Category Weights
We calculate course grades using the following weights:
| Category | % Contribution |
|---|---|
| Quizzes | 70% |
| Machine Problems | 20% |
| Graded Lessons | 5% |
| Recitation | 5% |
We reserve the right to modify these weightings during the semester. Points do not overflow between categories: you cannot earn more than the total available in any one of them.
Grade Scale
Only exceptional performance constitutes an A. We move at a pace that requires sustained commitment throughout the semester. We assign course grades according to the following scale:
| Letter Grade | Minimum % of Total Points Earned |
|---|---|
| A | 93.0% |
| A- | 90.0% |
| B+ | 87.0% |
| B | 83.0% |
| B- | 80.0% |
| C+ | 77.0% |
| C | 73.0% |
| C- | 70.0% |
| D | 60.0% |
You will fail this course if you earn below 60.0% of the total available points.
We truncate, rather than round, your final percentage to the nearest tenth when determining the letter grade; e.g., a final score of 89.99% is treated as 89.9%.
Final Exam
CS 128 has no final exam.
Grade Reports
We publish weekly grade reports to 128 Achieve (achieve.cs128.org). Each grade report is a snapshot of your grade at the time it was generated.
The Coursework Is the Quiz Preparation
Machine problems, graded lessons, and recitation are worth thirty percent of your grade and one hundred percent of your preparation for the other seventy. We do not assign this work to distribute points. We assign it because learning to program requires deliberate practice, and these activities are that practice. Working through them is what turns a concept you have followed into one you can apply. Complete this work carefully, honestly, and on schedule.
Assessments
We assess your work in four categories: Quizzes, Machine Problems (MPs), Graded Lessons, and Recitation. All due dates, late-work rules, drops, and waivers for these categories are governed by the Deadlines, Late Work, and Drops section of this syllabus.
Quizzes
Quiz Environment and Conduct
You take every quiz in the Computer-Based Testing Facility (CBTF; cbtf.illinois.edu) under proctored conditions, and you complete it entirely on your own: no collaboration is permitted, no AI tool may be used, and no outside resource beyond what the proctored environment provides is available to you during the session. Attempting to circumvent those conditions is an academic integrity violation, which we refer to the Faculty Academic Integrity Reporting (FAIR) process governed by Article 1, Part 4 of the Student Code (studentcode.illinois.edu/article1/part4).
Each quiz lasts fifty minutes. If you have a testing accommodation through Disability Resources & Educational Services (DRES; disability.illinois.edu), upload your Letter of Accommodations (LOA) to the CBTF (cbtf.illinois.edu/students/dres) before you make your first quiz reservation. The CBTF then applies your accommodation to that base duration. You must complete this upload each semester in which you use the CBTF, and it is separate from submitting your accommodations letter for the course itself, which the DRES Accommodations section describes.
The policies of the CBTF are the policies of this course, and academic integrity infractions related to the CBTF are infractions in this course. Review all instructions on the CBTF website (cbtf.illinois.edu/students) before your first quiz.
Reservations
Quizzes are not administered at a fixed time, so you reserve your own seat through the CBTF reservation system, which opens on the self-reserve date listed in the Quiz Schedule alongside each quiz's start and end dates. Reserve early, since the most popular sessions fill first.
Content and Format
Quiz content is cumulative: each quiz can cover material from the first day of instruction up to and including the day before the day on which you take it, so the content of your quiz depends on which day of the window you choose. The CBTF windows for consecutive quizzes do not overlap. A later quiz can therefore cover material from lessons that were not yet available during the preceding quiz's window.
Quizzes may include multiple-choice questions, programming exercises, debugging challenges, and other formats as appropriate. Conceptual questions are drawn from lesson content, while programming problems may be inspired by prior lesson activities or adapted from previously or presently assigned machine problems. Every question is autograded, and each question states the number of submissions it accepts within the timed session and how those submissions are scored. We provide no practice quizzes, because the coursework is the quiz preparation.
Scoring and Catch-Up Quiz Grading
All quizzes are weighted equally. When a quiz reveals that you have not yet mastered a concept, we want you to review that material and catch up before moving forward. Our catch-up quiz grading policy rewards exactly that recovery.
We compare only consecutive quizzes. If you score higher on a quiz than on the quiz immediately preceding it, we raise the earlier quiz's score to the average of the two. For example, if you earn a 70 on an earlier quiz and a 90 on the quiz that follows it, the earlier score becomes an 80, i.e., (70 + 90) / 2. This policy never lowers a quiz score.
There are three caveats:
- Both quizzes in a pair must be taken. A quiz you missed is neither raised nor used to raise the quiz before it, so a missed quiz ends the comparison on both sides.
- Every comparison uses the scores you actually earned. A score we raise is a result, never an input: we do not use it to raise the quiz before it, and we do not revisit a pair we have already scored.
- Catch-up quiz grading cannot apply to the final quiz in the Quiz Schedule, since no quiz follows it.
We apply catch-up quiz grading first and take the quiz drop afterward, so the drop, which is stated under Quiz Deadlines and Drops, is taken against your adjusted scores.
Problems During or After a Quiz
If there is an issue with your testing environment, tell the proctor immediately so that they can observe and document what happened. A problem you do not raise with a proctor during your session leaves no record, and you forfeit all rights to redress for it. A defect in the question itself is a separate matter, and you report it under Problem Reports.
Quiz Schedule
| Name | CBTF Start Date | CBTF End Date | CBTF Self-Reserve Opens |
|---|---|---|---|
| Quiz 1 | 2026-09-04 00:01:00 CDT | 2026-09-08 23:59:00 CDT | 2026-08-20 00:01:00 CDT |
| Quiz 2 | 2026-09-11 00:01:00 CDT | 2026-09-14 23:59:00 CDT | 2026-08-27 00:01:00 CDT |
| Quiz 3 | 2026-09-18 00:01:00 CDT | 2026-09-21 23:59:00 CDT | 2026-09-03 00:01:00 CDT |
| Quiz 4 | 2026-09-25 00:01:00 CDT | 2026-09-28 23:59:00 CDT | 2026-09-10 00:01:00 CDT |
| Quiz 5 | 2026-10-02 00:01:00 CDT | 2026-10-05 23:59:00 CDT | 2026-09-17 00:01:00 CDT |
| Quiz 6 | 2026-10-09 00:01:00 CDT | 2026-10-12 23:59:00 CDT | 2026-09-24 00:01:00 CDT |
| Quiz 7 | 2026-10-16 00:01:00 CDT | 2026-10-19 23:59:00 CDT | 2026-10-01 00:01:00 CDT |
| Quiz 8 | 2026-10-23 00:01:00 CDT | 2026-10-26 23:59:00 CDT | 2026-10-08 00:01:00 CDT |
| Quiz 9 | 2026-10-30 00:01:00 CDT | 2026-11-02 23:59:00 CST | 2026-10-15 00:01:00 CDT |
| Quiz 10 | 2026-11-06 00:01:00 CST | 2026-11-09 23:59:00 CST | 2026-10-22 00:01:00 CDT |
| Quiz 11 | 2026-11-13 00:01:00 CST | 2026-11-16 23:59:00 CST | 2026-10-29 00:01:00 CDT |
| Quiz 12 | 2026-11-18 00:01:00 CST | 2026-11-20 23:59:00 CST | 2026-11-05 00:01:00 CST |
| Quiz 13 | 2026-12-04 00:01:00 CST | 2026-12-07 23:59:00 CST | 2026-11-12 00:01:00 CST |
Each quiz's dates are subject to change. Any changes will be communicated via the course forum.
Quiz windows, the quiz drop, and the procedure for a missed quiz are governed by Quiz Deadlines and Drops.
Machine Problems
Collaboration and Conduct
You complete every MP without collaboration: no other student and no outside individual may assist you. If you have questions about your solution, your approach, or anything else related to an MP, seek help from the course staff during office hours. Do not search for, open, or use another person's solution to a CS 128 assignment, wherever it is posted, e.g., a public GitHub repository, Chegg, or Course Hero. If we find that you consulted or submitted such a solution, we will refer you to FAIR. AI tools may be used only in accordance with the AI Policy.
Release, Submission, and Scoring
We release new MPs according to the MP Schedule. The PrairieLearn autograder grades every MP, and awards partial credit for the test cases your solution passes. A solution that does not compile earns no points. Each MP increases in difficulty and sophistication relative to the one before it, so begin working as soon as an MP is released and continue steadily until the due date.
Each MP's submission limit and scoring rule are stated on its problem specification page on cs128.org. Where the specification does not state a submission limit, submissions are unmetered; where it does not state a scoring rule, your score is the maximum score across all of your submissions.
Code Interviews
After each MP, we select some students for a one-on-one session with the staff, during which you explain the code you submitted. Selection may be random or deliberate: we may choose you at random in a given cycle, and we may also choose you on the basis of your submission history, concerns raised through our academic integrity process, or other factors. Being selected for one MP neither guarantees nor precludes selection for another.
Invitations arrive by email and may be sent at any time after an MP's due date (see table below). You are responsible for being able to explain any solution you submitted for the MP, not only your latest or your highest-scoring one.
You must reply to the code interview invitation by email within 48 hours of the time we send it; failing to do so results in a zero on the MP. Your reply must list your availability across the 72 hours that follow the time of your response. If circumstances beyond your control prevent you from replying within 48 hours, post privately on the course forum as soon as you are able, and we will work with you.
The interview itself will take place in a format determined by the course staff, which may include virtual video conferencing (e.g., Zoom, Google Meet), an in-person meeting, or a session during recitation. Students will be informed of the assigned format in advance; the format is not selectable by the student. We expect you to explain your code to the staff's satisfaction, which means describing what the code does, justifying the design decisions behind it, and explaining why you used each language feature. If you cannot do so, you forfeit the grade for that MP, independent of the correctness of the code under discussion. Our assessment of your explanation is final and not open to review.
MP Schedule
| # | Release Date-Time | Due Date-Time | Points |
|---|---|---|---|
| MP 0 | 2026-09-10 05:00:00 CDT | 2026-09-17 23:59:59 CDT | 10 |
| MP 1 | 2026-09-17 05:00:00 CDT | 2026-09-24 23:59:59 CDT | 100 |
| MP 2 | 2026-09-24 05:00:00 CDT | 2026-10-01 23:59:59 CDT | 100 |
| MP 3 | 2026-10-01 05:00:00 CDT | 2026-10-08 23:59:59 CDT | 100 |
| MP 4 | 2026-10-08 05:00:00 CDT | 2026-10-15 23:59:59 CDT | 100 |
| MP 5 | 2026-10-15 05:00:00 CDT | 2026-10-22 23:59:59 CDT | 100 |
| MP 6 | 2026-10-22 05:00:00 CDT | 2026-10-29 23:59:59 CDT | 100 |
| MP 7 | 2026-10-29 05:00:00 CDT | 2026-11-05 23:59:59 CST | 100 |
| MP 8 | 2026-11-05 05:00:00 CST | 2026-11-12 23:59:59 CST | 100 |
| MP 9 | 2026-11-12 05:00:00 CST | 2026-11-19 23:59:59 CST | 100 |
| MP 10 | 2026-11-19 05:00:00 CST | 2026-12-03 23:59:59 CST | 100 |
Each MP's Release Date-Time and Due Date-Time are subject to change. Any changes will be communicated via the course forum.
Due dates, the late-credit schedule, the late penalty waivers, and the deliberate absence of an MP drop are governed by MP Deadlines and Late Work.
Graded Lessons
Release and Assigned Dates
A lesson is a graded lesson if it has at least one graded programming activity or question. All of a week's graded lessons are released together on Monday at 05:00 Champaign local time. Each lesson carries its own assigned date, which is the weekday on which that lesson appears on the lessons page (cs128.org/lessons). Releasing the week as a batch lets you work ahead, while the assigned date, not the release time, determines when a lesson is due. We expect you to complete a lesson's activities and questions on its assigned date.
Collaboration
Graded lessons permit limited collaboration. You may discuss a lesson's activities and your approaches to them with other students, in person or virtually; you may not give another student your source code, and you may not use another student's source code. You write and submit your own solution. We encourage you to form a study group and meet regularly. AI tools may be used only in accordance with the AI Policy.
Submission and Scoring
Within a graded lesson, each programming activity or question displays its point value, its number of allowed submissions (unlimited for programming activities), and its due date. In the event of any discrepancy between a displayed due date and this syllabus, the syllabus is authoritative. Your score for each activity or question is the maximum score across all of your submissions, and your score for a graded lesson is the number of points earned out of the points available for that lesson. Each graded lesson contributes equally to the graded lesson component of your final grade.
Due times and the automatic drops are governed by Graded Lesson Deadlines and Drops.
Recitation
Collaboration
Recitation requires collaboration: within your assigned group and during the session, you may discuss the activity, work through it together, and show one another your code, including on screen. Recitation code stays within your group. Keep your own copy and study it; do not send, post, or otherwise share it with students outside your group or after the session ends. AI tools may be used only in accordance with the AI Policy.
Format and Expectations
Recitation is a time to review and practice applying the material learned during the week. Each meeting consists of a short presentation followed by a group activity covering extensions of the week's material that we consider vital for deeply understanding the course concepts. Groups are formed at each recitation meeting as directed by the staff leading your section. Your assigned group for a given week is the group in which you complete that session's activity. When your group finishes the activity, a staff member reviews your work and records your credit for the week, so remain in the room until that verification is complete. Section days and times are listed in your course schedule.
Recitation credit is binary: you attend and participate to earn full credit, or you receive a zero for that week. We expect you to be present, engaged, and respectful during recitation. You earn a zero for that week if you do any of the following:
- Do not attend your scheduled recitation.
- Arrive late enough to miss part of the session.
- Leave before a staff member verifies your work and records your credit.
- Do not actively participate in your group's activities or discussions.
- Do not work on the assigned tasks during the session.
- Behave rudely or disrespectfully toward classmates or course staff.
The absence of a make-up session and the automatic drops are governed by Recitation Deadlines and Drops.
Deadlines, Late Work, and Drops
The automatic drops and late penalty waivers below are the course's built-in flexibility, intended to cover illnesses, personal emergencies, scheduling conflicts, late adds, and unexpected obligations that prevent you from meeting a deadline. We expect you to use these accommodations first.
You do not need to submit documentation to use a drop or a waiver. Maintain that documentation regardless (e.g., doctor's notes, official communications) in case you need further accommodation. We will pull from your allocated drops for a missed quiz, graded lesson, or recitation session, so do not contact the course staff about a single missed item. If instead you believe a record is wrong, report it under Problem Reports. The Accommodation Beyond the Drops and Waivers subsection below governs circumstances that exceed what the drops and waivers cover.
We accept no submission of any kind past the last day of instruction, which is published on the University's academic calendar (registrar.illinois.edu/faculty-staff/calendars/academic-calendars/). Search that calendar for "Last day of instruction". Every late period, waiver, and deadline below operates within that bound.
Quiz Deadlines and Drops
- Due date: Each quiz must be completed within its own CBTF window, which runs from that quiz's CBTF Start Date through its CBTF End Date as listed in the Quiz Schedule.
- Late policy: There is no late period. A quiz you do not complete before its CBTF End Date earns no credit, whether or not you reserved a seat for it.
- Drops: We automatically drop your single lowest quiz score, taken against your adjusted scores as described under Scoring and Catch-Up Quiz Grading. You have one drop for the semester. A quiz you skip consumes it, and no drop remains for an illness or an emergency later in the term.
- Missed quiz: If you miss your scheduled quiz session, two options remain: you reschedule at a physical CBTF location and complete the quiz before that quiz's CBTF End Date, or, if you cannot reschedule within the window, the missed quiz automatically becomes your dropped score. Any further missed quiz earns a zero, since we drop only a single score.
MP Deadlines and Late Work
Machine problems have no drop. The late-credit schedule below and the late penalty waivers provide that flexibility. Each MP is due at the Due Date-Time listed in the MP Schedule, and an MP you never submit earns a zero.
| Days Late | Credit |
|---|---|
| 1 | 95% |
| 2 | 90% |
| 3 | 85% |
| 4 or more, through the last day of instruction | 70% |
A late day is a calendar day, not a rolling 24-hour period. If an MP is due on Monday at any hour, all of Tuesday is the one-day late period, regardless of the hour at which you submit; specifically, for an MP due Monday at 23:59:59 Champaign local time, the one-day late penalty takes effect at Tuesday 00:00:00. The late period ends at the last day of instruction, so an MP due near that day carries a correspondingly shortened schedule; e.g., an MP due the day before the last day of instruction admits only a one-day late submission.
We apply the late-credit schedule to each submission before we compare submissions, so the score we record is the highest credited score across all of your submissions, where every submission made by the due date carries full credit. Consider an MP on which you earn 80 by the due date and 100 two days later; your recorded score is 90, since the 90% credit on the later submission exceeds the 80 you had already secured. Submitting again after the due date can therefore only raise your score.
Late Penalty Waivers
You may elect to waive the late penalty on two MPs, past, present, or future, from the "MP Late Penalty Waivers" section of My.CS128 (cs128.org/my/waivers). These waivers are "no questions asked" and available to everyone. They are never applied automatically. A waiver removes the late-credit reduction from that MP entirely, so we score it at the full number of points your submission earned, however late that submission arrived. You must select your waivers by the last day of instruction, and any MP for which you elect a waiver must be submitted to PrairieLearn no later than 23:59 Champaign local time on that day. PrairieLearn displays your score with the late penalty applied in real time. The waived score appears only on your official grade report.
Graded Lesson Deadlines and Drops
- Due date: Each graded lesson is due at 17:00 (5:00 p.m.) Champaign local time two calendar days after its assigned date, weekends included, or at 17:00 on the last day of instruction, whichever is earlier. A lesson assigned on Monday is due Wednesday at 17:00; a lesson assigned on Friday is due Sunday at 17:00.
- Late policy: There is no late period. Work submitted after 17:00 on the due date earns no credit.
- Drops: We automatically drop your five lowest graded lesson scores when calculating the graded lesson portion of your final grade.
Recitation Deadlines and Drops
- Due date: Recitation is completed during your scheduled section meeting.
- Late policy: There is no late period and no make-up session.
- Drops: We automatically drop your two lowest recitation scores when computing your final grade.
Accommodation Beyond the Drops and Waivers
If your circumstances exceed what the built-in drops and waivers absorb, e.g., a sustained illness or an extended emergency that affects multiple assessments, email the instructor within 48 hours of the missed deadline; attach the documentation you have maintained, and we will discuss further accommodation. If circumstances prevent notification within this window, e.g., hospitalization, notify the instructor as soon as reasonably possible thereafter, and include documentation explaining why the 48-hour deadline could not be met.
AI Policy
Definition and Scope
Throughout this policy, an AI tool is any generative system that produces code, text, or explanations in response to a prompt, however you access it: through a chat interface, an editor extension, a command-line tool, or an agent. Dictionaries, translation tools, spell checkers, and non-generative editor completion are not AI tools under this policy and are always permitted. During a quiz, no tool beyond what the testing environment provides falls within any permitted use. The governing prohibition appears under Quiz Environment and Conduct.
Using AI in this course is optional. You can complete every assignment and earn full marks without ever using an AI tool. If you do use one, the rules in this policy apply.
The Standard
Our course standard is this: you must write your own code, and you must be able to explain every line of it. If a course staff member asks why you wrote a particular line, what a specific variable represents, or how a section of your code works, you should be able to answer immediately and confidently, without consulting any resource; if you cannot, you have not yet learned what the assignment was designed to teach, regardless of whether your code compiles and passes test cases. Stated as a rule of use, AI may support your process, e.g., understanding the problem, learning relevant concepts, developing a strategy, debugging your attempts, and verifying correctness, but it may not produce your product, i.e., the code you submit, which you must be able to reproduce independently.
Permitted Uses
You may use AI tools to assist your work on graded lessons, recitation activities, and machine problems in the following ways:
- Breaking down assignments: Ask the AI to help you understand what an assignment is asking, identify the component parts of the problem, and clarify requirements that seem ambiguous.
- Developing a problem-solving plan: Use the AI to help you formulate a high-level approach before you begin writing code; that is, discuss algorithmic strategies, consider edge cases, and think through the logical structure of your solution.
- Explaining concepts or syntax: When you encounter unfamiliar C++ constructs, language features, or programming concepts, use the AI to help make sense of them.
- Understanding error messages and debugging output: Compiler errors and runtime failures can be cryptic. The AI can help you interpret what went wrong and why.
- Reviewing and explaining code: After you have written code yourself, use the AI to help you understand whether your implementation aligns with your intent and to identify potential issues.
- Designing test cases: Work with the AI to identify the scenarios, boundary conditions, and expected behavior your tests should cover.
Test-case design carries a limit: because a test case in C++ is itself code, you may work from an AI tool's suggestions, but you may not submit test code verbatim as an AI tool produced it.
Examples of Appropriate and Inappropriate Use
| When you are... | Appropriate | Inappropriate |
|---|---|---|
| Debugging a runtime error | "I'm getting a segmentation fault on line 23. Can you help me understand what might cause this?" | "My code has a segmentation fault. Fix it." |
| Learning a concept or language feature | "Can you explain how a destructor works in C++?" | "Write a destructor for my LinkedList class." |
| Tracing faulty logic in code you wrote | "I wrote this function but it's not returning the right value. Can you help me trace through the logic?" | "This function doesn't work. Rewrite it so it works." |
| Designing test cases | "I want to test my reverse function but I'm not sure where to start. Can you help me understand the process?" | "Generate all my test cases so I don't have to think about edge cases." |
| Beginning an assignment | "I'm not sure how to approach this problem. Can you help me break it down into smaller steps?" | "Here's the assignment prompt. Write the solution." |
Vibe Coding and Other Prohibited Use
Vibe coding is the practice of prompting an AI until something works, without ever solving the problem yourself. It is an academic integrity violation in this course, as is any other arrangement in which the AI does your work for you. Two conditions govern every use of AI on CS 128 coursework, and both must hold: you must solve the problem, and you must understand every line you submit.
The first condition concerns who does the work. A request that hands the problem to the AI fails this condition at the moment you make it, and understanding the result afterward does not repair the failure, since arriving at the solution is the work the assignment existed to develop. Test code is the exception, and Permitted Uses above states its limit. The following requests are violations:
- Asking the AI to complete an assignment or produce a solution for you.
- Asking the AI to "write a function that does X," or making any comparable request for solution code you should be writing yourself.
- Asking the AI to "make this work" or "fix this" in place of diagnosing the problem yourself.
The second condition concerns what you submit. Everything you turn in must be yours to explain, line by line, without consulting your notes or the AI. This condition applies equally to code you wrote entirely on your own. The following are violations:
- Submitting code you cannot fully explain.
- Iteratively prompting the AI until the tests pass, without comprehending what changed or why.
In a previous semester, we flagged approximately 150 students whose submissions exhibited patterns consistent with AI-generated code produced with minimal understanding. Their median quiz score was 30 percentage points lower than that of students who were not flagged, and the median score of those who relied most heavily on AI-generated submissions fell below passing.
Submitting the required reflection form and transcript does not excuse a violation of these conditions; we refer such violations to FAIR regardless.
Required Documentation
For every graded lesson, recitation activity, and machine problem on which you use AI assistance, however minimal or extensive, you must submit the AI Usage Reflection Form together with the complete transcript of your AI interactions. The form is at cs128.org/go/ai-reflection, and it requires you to log in with your UIUC account.
- To access this form, you will need to use your Illinois G Suite account.
- If you haven't activated it (most of you probably did in CS 124), kindly review these instructions.
- The major step is activating the account in the Cloud Dashboard.
If you did not use AI on a particular assignment, you do not need to submit the form. The form asks you to document which tools you used and for what purposes, what you learned from the interaction, how you verified that you understood the AI's suggestions, and what you would do differently next time, and to upload your transcripts.
Save your transcripts as follows.
- Command-line tools, e.g., Claude Code: we encourage you to use specstory-cli (specstory.com/specstory-cli), which automatically logs your conversations so that they can be exported for submission. If you choose not to use it, save the session output yourself, either by capturing the terminal session to a file or by copying the conversation into a text file as you work.
- Browser-based tools: download the entire conversation using the platform's export or download feature, or copy the full conversation into a text or PDF file where no export exists.
- Multiple sessions or tools on one assignment: submit transcripts from all sessions, labeling each with the tool used and the date and time of the session.
- Inline code-completion tools that cannot produce a transcript, e.g., GitHub Copilot, may not be relied on for coursework in this course.
Never ask the AI to reproduce the conversation for you: an AI asked to output a transcript produces a summary or a paraphrase, and the attestation you sign requires a complete and unaltered record.
Some assignments specify a required prompt header or interaction protocol, e.g., an opening prompt that establishes context or constraints for the AI conversation. Where an assignment specifies such a requirement, you must follow it; failing to do so is a violation of this policy.
Submit the AI Usage Reflection Form by 23:59 Champaign local time the day after you submit the work, or on the last day of instruction, whichever is earlier. For work you submit late, the clock runs from your actual submission.
Attestation
By submitting the AI Usage Reflection Form, you affirm that:
- The information provided on the form is accurate and complete.
- The submitted transcript(s) represent the complete and unaltered record of your AI interactions for this assignment.
- You understand that AI tools are permitted to support your learning, but that you are responsible for ensuring that you understand all work you submit.
- You acknowledge that quizzes must be completed without AI assistance and that your performance on quizzes reflects your genuine understanding of the course material.
Tools and Cost
We want you exposed to the most capable AI technologies, i.e., the frontier models, and we want you to develop the habit of using them effectively and responsibly while you are still in an environment where we can guide that development. We recommend Claude. Other tools such as ChatGPT or Gemini may also be used in accordance with this policy. No purchase is required: the free tiers of these tools are sufficient for every use this policy permits.
Academic Integrity
The University of Illinois at Urbana-Champaign Student Code (studentcode.illinois.edu) is part of this syllabus, and its academic integrity provisions bind every submission you make in this course. The Students' Quick Reference Guide to Academic Integrity (provost.illinois.edu) summarizes those provisions. Ignorance of these policies excuses no infraction, and sanctions are proportionate to the severity of the offense.
We compare every submission against every classmate's code, against student submissions from previous semesters, and against code from easily accessible online repositories. We also examine the development process behind a submission, which distinguishes naturally authored work from artificially generated work. Where the evidence persuades us that a violation is more probable than not, we file a FAIR case.
Your Attestation and Complicity
By submitting anything to this course, electronically or otherwise, you are asserting the following: "I have neither given nor received unauthorized aid on this academic work. In particular, I certify that I have not received or given any assistance that is contrary to the letter or the spirit of the collaboration guidelines for this assignment."
Complicity, i.e., helping or attempting to help another student commit an act of academic dishonesty, itself constitutes academic dishonesty and carries the same consequences as cheating. If you provide your solution to another student, you have committed an act of academic dishonesty even if that student never submits it. Both students will be subject to the same penalties.
Students have previously defended FAIR cases by claiming that a friend or peer accessed their solutions while a device was left unattended or loaned out; this is not a valid defense. You are responsible for securing your coursework and protecting your device, and if another individual accesses your work through negligence on your part, you remain accountable.
Cheating
All work submitted in this course must be completed according to course policies. The following activities are examples of cheating and will result in the sanctions outlined below. You may not:
- Submit work completed by anyone other than yourself.
- Use an AI tool in any way not permitted by the AI Policy.
- Use an AI tool without submitting the corresponding AI Usage Reflection Form and transcript.
- Copy or paste code from another student, online solutions, or any unauthorized source.
- Misrepresent another student's work as your own or allow your work to be misrepresented as theirs.
- Examine, reproduce, or submit another classmate's machine problem or quiz solution.
- Reveal, discuss, or enter the content of a quiz or other private course assessment anywhere outside the testing environment, including to another person and to any AI tool. This holds after your session ends and after the quiz window closes; a private problem report, per Problem Reports, is always permitted.
- Publish your MPs or other coursework in any location where other students could access them, including public GitHub repositories. Build the portfolio you show employers out of independent projects.
- Email, message, or otherwise share your code with anyone in this class, now or in a future semester, beyond the collaboration each assessment category expressly permits under Assessments.
- Write, insert, or otherwise modify code or comments to reveal hidden test cases, hard-code against the test cases in our suite, or circumvent or bypass the autograder in any way.
Course staff are not responsible for warning you about potential policy violations. If you are ever uncertain about what is allowed, seek clarification from the instructor via the course forum before collaborating with another student, using an AI tool, or seeking outside assistance on any assignment.
Plagiarism and Self-Plagiarism
Plagiarism means presenting someone else's work as your own. We assume that college students know what is honest and what is not.
Self-plagiarism is reusing work you have already submitted to a class. In CS 128, you cannot reuse or submit work you completed during a previous semester. If you are retaking the course, you must think through the problems again and compose new solutions without reviewing your solutions from the previous semester. Sitting out and disengaging while resubmitting old work teaches you nothing, so the sole exception is an extraordinary circumstance, e.g., a withdrawal for medical reasons, that the instructor approves in writing. Request that approval by email.
Sanctions
If you are caught cheating in CS 128, you will receive a FAIR violation, and the following sanctions apply:
| Infraction | Sanction |
|---|---|
| First offense | A reduction of one full letter grade in the class, e.g., an A becomes a B, and a zero score on each assessment involved in the violation. |
| Second offense, or an extreme act affecting other students | An F in the course. |
These sanctions are more severe than the departmental recommendations, and we apply them in full.
Getting Help and Course Communication
The course forum (discuss.cs128.org) is your default channel for reaching the staff, because it scales: a question answered on the forum is answered for the entire class, while a question answered by email is answered for one student, and many of the questions you have tend to be shared by others. You are responsible for email sent to your @illinois.edu address and for announcement messages posted on the course forum. We use both to distribute important information.
Office Hours
Office hours are scheduled times when course staff are available to help you individually, with no appointment needed, for any question, whether you are stuck on an assignment or want to talk through a concept. Attending is ordinary and expected.
On scheduled days we hold a block of in-person hours in the Tutoring Center in the Siebel Center for Computer Science, followed by virtual hours online. For both formats, you join through the course queue (queue.cs128.org). For in-person hours, go to the Tutoring Center and locate the CS 128 section, which may change from day to day since we do not have assigned spots. Once your name reaches the top of the queue, find the appropriate staff member yourself. For virtual hours, join the queue from wherever you are. Office hour times are posted on the course calendar (cs128.org/calendar).
The Course Forum
The course forum (discuss.cs128.org) handles questions that can be answered in text form. Before posting, search the forum, since another student may have asked your question and we may have answered it already. General questions about course content or an assignment, e.g., what a prompt means or what you are being asked to do, belong in public posts. Anything that would reveal your code or your solution, and any problem you are reporting, belongs in a private post. If you are unsure whether your post's contents could go against course policies, post privately. We do not debug full solutions on the forum, though we will provide clarification about smaller snippets of code.
Where to Direct Questions and Concerns
| Situation | Where it goes |
|---|---|
| A question about course content, an assignment, installation, or where to find something | Public post on the course forum |
| Anything that would reveal your code or your solution | Private post on the course forum |
| A problem with an assessment or with your record | Private post on the course forum, per Problem Reports |
| A request to raise a score | Not accepted, per Regrades |
| You believe a classmate is cheating | Email the instructor |
| Illness or circumstances putting you behind | Email the instructor, per Accommodation Beyond the Drops and Waivers |
| You are overwhelmed and want to talk to someone | Email the instructor, or speak with your academic advisor |
| Notice of a religious observance | Email the instructor, per Religious Observances |
| Reply to a code interview invitation | Reply to the invitation email, per Code Interviews |
| DRES letters and accommodation requests | Email the instructor, per DRES Accommodations |
| Accommodation beyond the built-in drops and waivers | Email the instructor, per Accommodation Beyond the Drops and Waivers |
Addressing Course Staff
We keep our forms of address formal and professional. Address your professor by professional title, e.g., Prof. Nowak; address a graduate teaching assistant (TA) as Mr., Ms., or Mx. unless your TA tells you otherwise; and address an undergraduate course assistant (CA) by first name.
Regrades, Audits, and Problem Reports
Regrades
We do not manually regrade work, and we do not act on requests for additional partial credit or for a more generous reading of an answer. If you believe there is a genuine problem with a score, report it as described under Problem Reports.
Audits
We reserve the right to audit the grade of any assessment submitted to this course. During an audit, we can decrease or increase your score. Audits are initiated by the course staff. Circumstances that might prompt an audit include a mistake made by our autograder, circumvention of a test case by any means, a breach of the academic integrity rules however small, or a failure to follow an assignment requirement.
Problem Reports
Report a problem through a private post on the course forum, identifying the specific issue you found. You might have found a defect in an assessment, such as a broken test case, or an error in your record.
Your reporting window opens on:
- Quizzes: the date you took the quiz.
- Machine problems and graded lessons: the date you submitted your solution, or the last day of instruction if that is earlier.
- Recitation activities: the date your recitation period met.
It closes seven days later, or on the last day of instruction, whichever falls first.
Once we have your report, we take one of the following actions:
- The question has a bug. We correct it and ensure that all affected students receive full credit or an opportunity to address the issue at our discretion, including those who completed the assessment before the bug was identified.
- The question has a minor typo that does not affect its ability to be correctly answered. We fix it and post the correction.
- The question is fine. We take no action.
We review a report about your own record by similar criteria.
Our determination closes the report. Filing again on the same question or the same record does not reopen it unless you provide information we did not have.
Accommodations
Religious Observances
Illinois law requires the University to reasonably accommodate its students' religious beliefs, observances, and practices with respect to admissions, class attendance, and the scheduling of examinations and work requirements. If a religious observance affects any of your class activities or assessments, notify the instructor by email within the first two weeks of classes for the semester in which the accommodation request applies.
DRES Accommodations
If you have DRES accommodations, you are required to formally submit your letter of accommodations for this course. Instructions for fulfilling this requirement appear on the Start Here page. Accommodations apply only after we receive your letter, and we cannot apply them retroactively in any situation. The upload of your LOA to the CBTF for quiz accommodations, described under Quiz Environment and Conduct, is a separate, additional step.
ADA Statement
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires that all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. To obtain disability-related academic adjustments or auxiliary aids, contact both the course instructor and DRES as soon as possible: visit 1207 S. Oak St., Champaign, call +1 (217) 333-4603, email [email protected], or go to disability.illinois.edu. If you are concerned that a disability-related condition is affecting your academic progress, academic screening appointments are available that can help diagnose a previously undiagnosed disability. Access them by visiting the DRES website and selecting "Request an Academic Screening" at the bottom of the page.
Additional Course Policies
Style Guide
In this course, we will use the Google C++ Style Guide (google.github.io/styleguide/cppguide.html).
Copyright and Recording
All material prepared for this class is copyrighted, including the syllabus, lecture slides and notes, exams, machine problems, and lab work activities. The course material is a copyrighted work, so you do not have the right to copy or distribute it unless the author expressly grants such permission. You may not record audio or video of any course activity unless you have an approved accommodation from DRES permitting recording, and you must present that accommodation letter to the instructor in advance of any recording being done. Students who are allowed to record are not permitted to redistribute audio or video recordings of statements or comments from the course to other individuals without the express permission of the faculty member and of any students or staff members who are recorded.
Classroom Climate
Our course goals can only be accomplished in a setting of mutual respect. We are committed to a classroom environment that welcomes all students, regardless of their identities, including race, class, gender, sexual orientation, and religious beliefs. Everyone is expected to help establish and maintain an environment where students, staff, and faculty can contribute without fear of personal ridicule or intolerant or offensive language. If you witness or experience behavior that goes against these expectations, bring it to the attention of the course instructor.
CS Values and Code of Conduct
All members of the Illinois Computer Science department, whether faculty, staff, or students, are expected to adhere to the CS Values and Code of Conduct. The CS CARES Committee is available to serve as a resource for anyone who is concerned about or experiences a potential violation of the Code. If you experience such issues, contact the CS CARES Committee. The instructor of this course is also available for issues related to this class.
Tentative Schedule
| Week | Topics |
|---|---|
| 1 | Introduction to C++ |
| 2 | Introduction to C++ cont. |
| 3 | Navigating the command line; compilation and execution |
| 4 | Build systems, version control, and software errors |
| 5 | Testing and debugging |
| 6 | Compound types (pointers, references, arrays); user-defined types |
| 7 | Streams and input validation; data representation |
| 8 | Functions and the stack; the free store |
| 9 | Dynamic memory in classes |
| 10 | Linked lists; generic programming |
| 11 | Inheritance and polymorphism |
| 12 | Trees |
| 13 | Graphs |
| 14 | Design patterns; smart pointers |
| 15 | Concurrency, networking, and databases |