Syllabus

Spring 2026 | CS 128
University of Illinois Urbana-Champaign


Instructor Information

Prof. Michael R. Nowak | Teaching Assistant Professor
Siebel School of Computing and Data Science, University of Illinois at Urbana-Champaign

See the Course Communication section of the syllabus for contact guidelines.


Learning Objectives

At the end of the course, a successful student 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 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 and can be implemented and run on a computer
  • Construct and test code from a simple specification

Required Textbook

There is no required textbook for CS 128. All daily lessons are posted on this website.


Getting Started

After reading the course syllabus (cs128.org/syllabus), please visit our Start Here page (cs128.org/start).


Course Structure

Asynchronous Lectures

This class breaks from traditional collegiate lectures by delivering course content through a series of asynchronous daily lessons available on-demand through our course website. Each lesson introduces new material through a combination of text, video, and interactive walkthroughs. You will find interactive coding exercises interspersed throughout most lessons, which are designed to reinforce the material that you have been learning about.

Synchronous Programs

Recitation Sections

You have enrolled in the synchronous recitation section for CS 128. Your attendance to this section is mandatory, but your grade will not solely depend on attendance. More information about this section, including the grading policies, is found later in this document.

Meet the Professor

"Meet the Professor" sessions provide an opportunity for informal discussions with Prof. Nowak. Dates and times are posted on the course calendar (cs128.org/calendar). Some sessions are in-person; others are virtual. This is not a content-help session—it is a space for open conversation and a chance to get to know each other.


Getting Help

Office Hours

On days when office hours are scheduled, we will hold a block of in-person office hours located in the Tutoring Center in the Siebel Center for Computer Science, followed by virtual office hours online. For both formats, students will use the course help site (queue.cs128.org) to join the queue.

The key difference is where students join the queue from:

  • For in-person office hours, students must physically go to the Tutoring Center. Within the room, they should locate the CS 128 section, which may change from day to day since we do not have assigned spots. Once their name reaches the top of the queue, it is the student’s responsibility to find the appropriate staff member for help.
  • For virtual office hours, students may join the queue from wherever they are and will receive help online.

Office hour times are posted on the course calendar (cs128.org/calendar).

Discussion Forum

The discussion forum (discuss.cs128.org) is meant for smaller questions that can be easily answered in text form. Most policy questions are answered in this syllabus. For almost anything else, search the forum—maybe another student has asked your question and we've already answered it. If you still can't find an answer, post your question on the forum. While we do not debug solutions on the discussion forum, we're happy to provide clarification about smaller snippets of code. If you're posting code, please make sure your post is private so that you do not violate our academic integrity policies.

Rule of thumb: any general questions about the assignment -- e.g., I don't understand what I'm supposed to do, what does the prompt mean by x, etc. -- can be asked publicly on the course forum. However, any implementation specific questions or otherwise must be asked privately. If you are unsure whether your discussion forum post's contents could go against course policies, you should make your post private.


Course Communication

We have set up a comprehensive and well-organized course website and discussion forum to help you find what you need to know. Our goal is to avoid email and other 1-to-1 forms of communication that don't scale well to large numbers of students.

Primary Sources of Information for CS 128:

  1. This website (cs128.org)
  2. The course forum (discuss.cs128.org)

Most policy questions are answered in this syllabus. For almost anything else, search the forum—maybe another student has asked your question and we've already answered it. If you still can't find an answer, post your question on the forum.

Addressing Course Staff

While I recognize that today's world is more casual than ever, I prefer to keep things formal and professional. Therefore:

  • When addressing your professor, please address us with our professional title. For example, Prof. Nowak.
  • When addressing a graduate TA, I suggest using the prefix Mr./Ms./Mx. unless your TA tells you otherwise.
  • When addressing an undergraduate CA, feel free to use their first name.

What You're Responsible For

  • You are responsible for email sent to your @illinois.edu email address. We will occasionally use a course email list to send important announcements.
  • You are also responsible for announcement messages posted in the course forum. These announcements are important and we will frequently post in this category in lieu of using email.

Contacting the Course Staff

The course forum is your primary point of contact with the staff. You may think the professor's five minutes of responding to your email is not a huge problem. Five-minute responses to 100s of students can consume many hours, though. Therefore, we kindly ask you to post to the course forum.

This is not because we don't like you. It's because there are many of you, a much smaller number of us, and many of the questions you have tend to be shared by other students. If you email us, we can answer your question with one person: you. If you post on the course forum, we can answer your question for the entire class. You may find that your question has already been answered by searching before posting or that another student can answer it for you before the course staff.

General guide about how to contact the course staff:

  • I need help installing... post on the course forum.
  • I'm confused about the concept... post on the course forum.
  • I need help with... post on the course forum.
  • I can't find... post on the course forum.

Cases where you can and should contact the course instructors:

  • I think that my friend is cheating in CS 128... contact the course staff.
  • I'm really sick and getting behind in the class... contact the course staff.
  • I'm feeling really overwhelmed and need someone to talk to... contact the course staff, or an academic advisor, or a friend.

Grading

Grade Scale

Only exceptional performance will constitute an A grade. The pace of this course assumes sustained commitment throughout the semester.

Course grades will be assigned according to this scale:

Minimum % of Total Points Earned Letter Grade
93.0% A
90.0% A-
87.0% B+
83.0% B
80.0% B-
77.0% C+
73.0% C
70.0% C-
60.0% D

You will fail this course if you earn below 60.0% of the total available points.

Note: Final grade percentages are truncated (not rounded) to the nearest tenth to determine the letter grade. For example, a final score of 89.99% will be treated as 89.9%.

Method of Evaluation

Course grades will be calculated using the following weights:

Category % Contribution
Quizzes 60%
Machine Problems 25%
Graded Lessons 10%
Recitation 5%

We reserve the right to modify these weightings during the semester. Note: No categories will overflow—you cannot earn more than the total number of available points for each respective category.

Last Day to Submit Coursework

We do not accept any submissions past the semester's last day of instruction. The date for the current semester's last day of instruction is found on the University's academic calendar (registrar.illinois.edu/faculty-staff/calendars/academic-calendars/). Search the academic calendar for "Last day of instruction".


Assessments

Quizzes

Overview

No Collaboration Allowed. No AI Tools Permitted. You must complete all quizzes entirely on your own. The use of any AI tools is strictly prohibited during quizzes. Any use of AI assistance on a quiz constitutes an academic integrity violation and will be referred to FAIR.

No course staff are involved in grading CS 128 quizzes, so please do not appeal your grade to the course staff. If you have concerns about the questions themselves, please post privately on the discussion forum after the quiz ends, usually meaning at least one day later than the CBTF end date (as defined below).

Quiz Structure

Based on the schedule in the table below, you will take two quizzes on "quiz weeks": an "A" quiz and a "B" quiz. Together, these two quizzes cover the same scope that a single quiz would have covered in previous semesters, but divided across two sessions to give you adequate time to thoughtfully complete each question. We adopted this format because the CBTF does not permit quizzes exceeding 50 minutes in duration.

All quizzes are weighted equally. Your final quiz grade is calculated from all 12 quiz scores (Quiz 1A through Quiz 6B), with the single lowest score dropped. For example, if your lowest score is on Quiz 3B, only Quiz 3B is dropped, not both Quiz 3A and Quiz 3B.

Quiz Content and Timing

The content on your quiz depends on which day you take it. Each quiz can cover material from the first day of instruction up to and including the day before your scheduled quiz date. This means:

  • If you take Quiz 1A on Monday, your quiz can include content through Sunday.
  • If you take Quiz 1A on Tuesday, your quiz can include content through Monday—meaning it may contain questions that were not on Monday's version.

The CBTF windows for Quiz A and Quiz B do not overlap. You must complete Quiz A before the Quiz B window opens. As a result, Quiz B can include material from more recent lessons that were not yet available during the Quiz A window.

For example:

  • If you take Quiz A on Wednesday, all material through Tuesday may appear on the quiz.
  • If you then take Quiz B on Friday, all material through Thursday may appear on the quiz—including content from Wednesday and Thursday that could not have appeared on Quiz A.

Important Quiz Information

  • Quizzes are cumulative. See the "Quiz Content and Timing" section above for details on how quiz content varies based on your scheduled date.
  • This course uses the Grainger College of Engineering's Computer-Based Testing Facility (cbtf.engr.illinois.edu) for its quizzes.
  • The policies of the CBTF are the policies of this course, and academic integrity infractions related to the CBTF are infractions in this course.
  • If you have accommodations identified by the Division of Rehabilitation-Education Services (DRES) (disability.illinois.edu) for quizzes, please submit your Letter of Accommodations (LOA) here (cbtf.illinois.edu/students/dres) before you make your first quiz reservation. This must be done each semester you use the CBTF.
  • If you have any issue during a quiz, inform the proctor immediately. Work with the proctor to resolve the issue at the time before logging off. If you do not inform a proctor of a problem during the test then you forfeit all rights to redress.
  • Review all instructions on the CBTF website (cbtf.illinois.edu/students) before your first quiz.

Quiz Schedule

Name Duration CBTF Start Date CBTF End Date CBTF Self-Reserve
Quiz 1A 50 min 2026-02-02 00:01:00 2026-02-04 23:59:00 2026-01-22 00:00:00
Quiz 1B 50 min 2026-02-05 00:01:00 2026-02-08 23:59:00 2026-01-22 00:00:00
Quiz 2A 50 min 2026-02-16 00:01:00 2026-02-18 23:59:00 2026-02-05 00:00:00
Quiz 2B 50 min 2026-02-19 00:01:00 2026-02-22 23:59:00 2026-02-05 00:00:00
Quiz 3A 50 min 2026-03-02 00:01:00 2026-03-04 23:59:00 2026-02-19 00:00:00
Quiz 3B 50 min 2026-03-05 00:01:00 2026-03-08 23:59:00 2026-02-19 00:00:00
Quiz 4A 50 min 2026-03-23 00:01:00 2026-03-25 23:59:00 2026-03-05 00:00:00
Quiz 4B 50 min 2026-03-26 00:01:00 2026-03-29 23:59:00 2026-03-05 00:00:00
Quiz 5A 50 min 2026-04-06 00:01:00 2026-04-08 23:59:00 2026-03-26 00:00:00
Quiz 5B 50 min 2026-04-09 00:01:00 2026-04-12 23:59:00 2026-03-26 00:00:00
Quiz 6A 50 min 2026-04-20 00:01:00 2026-04-22 23:59:00 2026-04-09 00:00:00
Quiz 6B 50 min 2026-04-23 00:01:00 2026-04-26 23:59:00 2026-04-09 00:00:00

All date-times are in the Champaign-local time zone.

Quiz Format

  • CS 128 quizzes may include multiple-choice questions, programming exercises, debugging challenges, and other formats as appropriate. All questions are automatically graded.
  • Quizzes typically feature conceptual questions drawn from lesson content, along with small programming problems. Programming problems may be inspired by prior lesson activities or adapted from previously or presently assigned machine problems.
  • You have unlimited attempts on programming and debugging questions without penalty. These are designed for practice, and we encourage you to refine your solutions. Keep in mind, however, that quizzes are timed, so you do not have unlimited time to complete them.
  • Conceptual questions should be straightforward if you have been keeping up with daily lessons. Programming and debugging questions may be more challenging—especially under time constraints. While you won't have access to outside resources (such as course staff or the internet) during quizzes, the tasks are intentionally small and aligned with the skills you are expected to develop over the semester.

Missed Quizzes

Please do not contact course staff about missed quizzes. If you miss your scheduled quiz time, you have two options:

  1. Reschedule within the quiz window: Visit a physical CBTF location to reschedule your quiz. You must complete the quiz before the CBTF End Date for that quiz.
  2. Use your drop: If you cannot reschedule within the quiz window, the missed quiz will become your dropped score. Remember that you only have one drop for the entire semester, and it applies to a single quiz (e.g., Quiz 2A), not a pair of quizzes.

If you have already used your drop and experience circumstances that warrant further accommodation, please review the Late Penalty Waivers and Drops section of this syllabus.

Catch-up Quiz Grading

The material in CS 128 is cumulative, and in large part each daily lesson builds on the material covered previously. We realize that sometimes, you think you've understood a concept, but your performance on a quiz proves otherwise. If you perform poorly on a quiz, we want you to go back and review that material so that you catch up and are prepared to move forward!

That's why we provide a catch-up quiz grading policy. Here's how it works. Quizzes are ordered sequentially: Quiz 1A, Quiz 1B, Quiz 2A, Quiz 2B, and so on. If you do better on a quiz than on the immediately preceding quiz, we'll increase your score on the earlier quiz to the average of the two scores. For example, let's say you struggle on Quiz 2A and earn a 70, but then rally on Quiz 2B for a 90. Since your performance on Quiz 2B indicates knowledge of the material tested on Quiz 2A, we'll increase your Quiz 2A score to 80: (70 + 90) / 2. If you do worse on Quiz 2B, your Quiz 2A score remains unchanged. This policy will never lower any quiz grade.

There are a few caveats. First, we don't apply catch-up quiz grading to quizzes that you miss. So you have to take the earlier quiz for us to apply it after you complete the following quiz.

Finally, catch-up quiz grading does not ripple backward. If we increase your score on one quiz because you did better on the next, we don't then go back and adjust earlier quizzes.

Why We Do Not Provide Practice Quizzes

I am frequently asked whether practice quizzes are available for this course. We do not provide practice quizzes because we expect that if you honestly complete the graded lessons, engage meaningfully with recitation activities, and work through the machine problems yourself, you will be well-prepared for the quizzes. These learning activities were designed with this purpose in mind; they are the practice.

Machine Problems (MPs)

Overview

  • No Collaboration with other students allowed. AI tools may be used in accordance with the AI Policy for CS 128; see that section for permitted uses and documentation requirements.
  • Machine problems are also called MPs throughout this document and the course.
  • New MPs will be released according to the schedule below.
  • To achieve the best outcomes, begin working on your solutions as soon as each MP is released and continue steadily until the due date—waiting until the last minute often leads to poor results.
  • Each MP increases in difficulty and sophistication compared to the previous one.
  • All MPs are automatically graded by the PrairieLearn autograder, and partial credit may be awarded for passing some of the test cases. However, any solution that does not compile will receive no points.

MP Schedule

# Release Date Due Date Points
0 2026-01-22 05:00:00 2026-02-02 23:59:59 10
1 2026-02-05 05:00:00 2026-02-16 23:59:59 100
2 2026-02-19 05:00:00 2026-03-02 23:59:59 100
3 2026-03-05 05:00:00 2026-03-23 23:59:59 100
4 2026-03-26 05:00:00 2026-04-06 23:59:59 100
5 2026-04-09 05:00:00 2026-04-20 23:59:59 100
6 2026-04-23 05:00:00 2026-05-05 23:59:59 100

All date-times are in the Champaign-local time zone.

Each MP's Release Date and Formal Due Date are subject to change; any changes will be communicated via the course forum.

MP Late Policy

The late policy for each MP follows a graduated credit reduction system designed to encourage timely submission while still providing opportunities for partial credit.

Credit Reduction Schedule:
  • 1 day late: 95% credit
  • 2 days late: 90% credit
  • 3 days late: 85% credit
  • 4+ days late (up to the last day of instruction): 70% credit
  • Important: No work will be accepted beyond the last day of instruction. The late policy does not extend past this date. If an MP is due on the last day of instruction, it will not have any late period. If an MP is due close to the last day of instruction, the late policy applies only up to the last day of instruction. For example, if an MP is due the day before the last day of instruction, only a one-day late submission is possible.
  • Note: A "one-day late" submission is not measured on a 24-hour rolling clock but instead by calendar days. For instance, if an MP is due on Monday at any time, then all of Tuesday is considered the one-day late period. This means that Tuesday, regardless of the hour of submission, is treated as a single late day. For emphasis, if an MP is due by Monday 23:59:59 (Champaign local time), the 1 day late penalty comes into effect on Tuesday 00:00:00.

MP Late Penalty Waivers

Students can elect to waive the late penalty on TWO (2) machine problems (past, present, or future) from the "MP Late Penalty Waivers" section of My.CS128 (cs128.org/my/waivers).

  • This is a "No Questions Asked" waiver that is available for everyone.
  • This is not automatic, and you are not required to use these waivers should you choose not to.
  • Without exception, students must select their late penalty waivers by the semester's last day of instruction.
  • For any MP you've elected a late penalty waiver, submit the assignment to PrairieLearn by 23:59 Champaign local time on the semester's last day of instruction.
  • The late penalty waiver will not appear in PrairieLearn in real time. As a result, late submissions in PrairieLearn will display the score with the late penalty applied. The waived penalty will only be reflected on your official CS 128 Grade Report.

MPs and PrairieLearn

In this course, you will submit your MPs to PrairieLearn using your CS 128 account instead of your NetID account used in your other classes. Therefore, you must access our CS 128 course in PrairieLearn through the links provided in our assessment prompts. Each assessment submitted to PrairieLearn in CS 128 will have an "Access Autograder" blue button. Upon clicking that button, you will be logged into your CS 128 PrairieLearn account. If your other courses use PrairieLearn, you must log out and back in using your NetID account to access your other classes.

Graded Lessons

Limited Collaboration Allowed. AI tools may be used in accordance with the AI Policy for CS 128; see that section for permitted uses and documentation requirements.

  • Graded lessons for the week are released on Sunday at 05:00 Champaign local time.
  • We expect you to complete the activities and questions on the same day that the lesson is released.
  • A lesson is considered a graded lesson if it has at least one graded programming activity or question.
  • Lessons are designed to be completed in a study group setting. We strongly encourage you to form a study group and schedule a regular daily meeting time to go through each lesson together. Discuss the lesson content as it is presented, brainstorm high-level approaches to the activities, and help one another think through the concepts.
  • You may review and discuss code with members of your study group—either in person or virtually—but you may not electronically share or receive source code (e.g., by copying, sending, or uploading files).
  • All students are required to write and submit their own solutions. Even when working together on the lessons, we expect each student's work to reflect their own understanding, which naturally results in small differences between submissions.
  • Keep in mind that the quizzes must be completed independently, and the lesson programming problems are an essential way to prepare for them.

Submission Policy

Within a graded lesson:

  • Each programming activity or question will display its point value, the number of allowed submissions (with unlimited attempts for programming activities), and its due date.
  • All due dates follow the course's published due date and late policy. In the event of any discrepancy between the due date shown in an individual activity and the published due date/late policy stated below, the published policy will take precedence.
  • Your score for each activity or question will be recorded as the maximum score across all of your submissions.
  • Your score for a graded lesson will be the total number of points earned out of the maximum points available for that lesson. Each graded lesson contributes equally to the graded lesson component of your final grade.

Due Dates and Late Policy

  • Due date: Graded lessons are due by 17:00 (Champaign local time) two days after they are assigned. For example, if a graded lesson is assigned on Monday, its activities must be completed by Wednesday at 17:00.
  • Late policy: Graded lessons must be completed by their due date. Do not contact course staff about missed graded lessons. To account for illness, emergencies, or other excused absences, we will automatically drop the lowest five (5) graded lessons when calculating the graded lesson portion of your final grade.

Recitation

Collaboration Required. AI tools may be used in accordance with the AI Policy for CS 128; see that section for permitted uses and documentation requirements.

Recitation is a time to review and practice applying the material learned during the week. The meeting period will consist of a short presentation and a group activity. The activities will cover important extensions of the week's material that we think are vital for deeply understanding the course concepts. We also believe group work and an in-person environment can bring many benefits to students. For these reasons we made recitation a required part of the course with it contributing to your final course grade.

Your recitation grade is based on your attendance and the effort you put into the activity. There is no partial credit for a recitation session; you either attend and participate to earn full credit or receive a zero for that week. Additionally, two (2) of your recitation scores will be dropped when computing your final grade.

You are expected to be present, engaged, and respectful during recitation. You may not receive credit if you fail to meet these expectations. Potential reasons for losing recitation credit include:

  • Not attending your scheduled recitation.
  • Arriving late on a consistent basis.
  • Leaving before a staff member verifies your work.
  • Not actively participating in your group's activities or discussions.
  • Failing to work on the assigned tasks during the session.
  • Behaving rudely or disrespectfully toward classmates or course staff.

General Policies

Late Penalty Waivers and Drops

When life happens—whether expected or unexpected—we recognize that there may be times when you're unable to attend class, complete an assignment, or meet a deadline. The course includes built-in flexibility in the form of drops and late penalty waivers to help you manage such situations.

We expect you to use these tools first, as they were built into the course to support you in navigating the kinds of situations where completing work on time isn't possible. These accommodations are intended to cover a range of life events, from illnesses and personal emergencies to scheduling conflicts or other unexpected obligations.

Please make sure to save documentation for any instance in which you use a drop or late penalty waiver (e.g., doctor's notes, official communications, etc.). This documentation may be requested, especially if you seek further accommodations beyond what is already built into the course.

In summary:

  • Use the built-in accommodations first: The course design anticipates life's challenges, so we require you to use the provided drops and late penalty waivers as your first recourse.
  • Document every case: Always save the necessary documentation for any drop or late penalty waiver you use.
  • Additional accommodations: Once these options have been exhausted, we can discuss further accommodations if needed.

Regrades and Audits

Regrade requests, challenges, and/or otherwise of the grade on any assessment must be submitted within one week (7 days) from the date that the respective student work is handed back.

For all works submitted to PrairieLearn or to the website (cs128.org), this is within one-week from the assignment due date (not the late due date).

We reserve the right to audit the grades for any assessment submitted to this course; during the audit process, we can decrease or increase your score. Examples when this might occur include (but are not limited to):

  • a mistake made by our auto-grader;
  • student circumvention of a test case by any means;
  • breach of any extent of the academic integrity rules; and
  • student failing to follow an assignment requirement

Whenever there is uncertainty, it is your responsibility to seek clarity. Never assume; instead confirm.

Reporting Problems

If you believe that you have identified a problem with a quiz question, machine problem, lesson, or otherwise, please report the problem to the course staff through a private post on the discussion forum. Do not post your questions publicly.

Once we have received your report, we will do one of the following:

  • If the question has a bug, we will correct it and ensure that all affected students receive full credit or have an opportunity to address the issue at our discretion—including those who completed the assignment before the bug was identified.
  • If the question has a minor typo that we don't think affects its ability to be correctly answered, we will fix it and distribute that change.
  • If the question is fine, we will not do anything.

AI Policy for CS 128

Artificial Intelligence Tools and Your Learning

AI-assisted coding tools have fundamentally changed how software is developed in industry; however, their role in an educational setting requires careful attention to how they may affect one's learning.

Learning to program is a process. As students arrive in CS 128, many are still learning how to learn, including how to translate unfamiliar concepts into something familiar, how to recognize what they do not yet understand, and how to ask the questions that will lead them towards a solution. This foundational development cannot be bypassed; it must be built incrementally through deliberate practice and honest engagement with the material.

There are no shortcuts. If you allow AI to do your thinking, you will arrive at subsequent courses without the skills those courses assume you have. You will sit in technical interviews unable to solve problems that your transcript suggests you should find straightforward. Your grades may open doors, but your skills—or lack thereof—will determine what happens next. In today's job market, employers expect fluency with AI tools, but they also expect you to verify what AI produces, to recognize when it is wrong, and to solve problems independently when necessary. You cannot develop these abilities by outsourcing your learning.

Using AI Responsibly: Understanding vs. Outsourcing

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 were to ask you 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 resources. If you cannot do this, you have not yet learned what the assignment was designed to teach you—regardless of whether your code compiles and passes test cases.

AI tools should be used to reach this level of understanding, not to bypass it. Ask the AI to explain concepts until you understand them, but do not ask it to produce code for you to submit.

Think of AI as a Tutor, Not a Ghostwriter

A good tutor helps you understand material you find confusing. They answer your questions, explain concepts in different ways, point out where your reasoning went wrong, and guide you toward solutions. But a tutor does not complete your assignments for you—and if they did, you would not learn anything, and you would fail the quiz.

Use AI the way you would use a tutor. Ask questions. Seek explanations. Request feedback on your thinking. But do not hand over the assignment and ask for a completed solution.

Process vs. Product

Another way to think about this: AI may support your process. AI may not produce your product.

The process of completing an assignment includes understanding the problem, learning relevant concepts, developing a strategy, debugging your attempts, and verifying correctness. AI tools can and should support all of these activities.

The product you submit (i.e., your code) must be your own. You must write it, understand it, and be able to reproduce similar work independently. If the AI wrote your code, it is not your product, even if you submitted it.

Examples of Appropriate and Inappropriate Use

The following examples illustrate the distinction between using AI to support your understanding and using AI to complete your work:

Appropriate Use Inappropriate Use
"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."
"Can you explain how a destructor works in C++?" "Write a destructor for my LinkedList class."
"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."
"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."
"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."
"Can you explain what this error message means?" "Make this error go away."
"I think I need to use recursion here. Can you explain how recursion works with an example?" "Write a recursive solution for this problem."
"Here's my implementation. Can you help me understand why it fails for empty inputs?" "Here's my implementation. Make it handle all edge cases."

The pattern should be clear: appropriate use involves asking the AI to help you understand so that you can do the work yourself. Inappropriate use involves asking the AI to do the work so that you can submit it.

Permitted Uses of AI

You may use AI tools (such as Claude Code, ChatGPT, GitHub Copilot, or similar) to assist with 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—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 and generating test cases: Work with the AI to develop comprehensive tests that validate the correctness of your implementations.

This last point deserves particular emphasis. One of the most valuable applications of AI in your learning is the generation of test cases. When you ask an AI to help you with tests for your code, you are engaging in a fundamentally different activity than asking it to write your code for you. To design a meaningful test, you must first understand what the code is supposed to do, what edge cases might cause it to fail, and what constitutes correct behavior. The AI can help you think through these scenarios more thoroughly than you might on your own, and in doing so, it reinforces rather than replaces your understanding.

Quizzes must be completed entirely without AI assistance in the proctored CBTF environment. The graded lessons, recitation activities, and machine problems are not merely assignments to be completed—they are the means by which you develop the competencies that the quizzes are designed to assess.

Required Documentation: AI Reflection Form and Transcript

All AI usage must be documented. For every graded lesson, recitation activity, and machine problem on which you use AI assistance, you are required to complete and submit an AI Usage Reflection Form along with the transcript of your interactions. This requirement applies regardless of how minimal or extensive your AI usage may have been.

Submit the AI Usage Reflection Form at cs128.org/go/ai-reflection. This links to a Google Form that requires you to log in with your UIUC account.

The reflection form asks you to document:

  • What AI tool(s) you used and for what purpose(s)
  • What you learned from the interaction
  • How you verified that you understood the AI's suggestions
  • What you would do differently next time
  • Upload your transcripts with the AI

If you did not use AI on a particular assignment, you do not need to submit the form.

Transcript Submission Requirement

You must save and submit a complete transcript of your AI interactions for each assignment and upload them in your reflection. This transcript provides a record of how you engaged with the AI and allows us to verify that your usage aligns with the permitted purposes outlined in this policy.

For command-line integrated tools (e.g., Claude Code):

We encourage you to use specstory-cli (specstory.com/specstory-cli), a tool that automatically saves your AI interaction transcripts. When you use Claude Code with specstory-cli, your conversations are automatically logged and can be exported for submission. This ensures you have a complete, unaltered record of your AI interactions without needing to manually manage transcripts.

If you choose not to use specstory-cli, you must manually save your transcripts. At the start of each session, ask the AI to prepare and maintain a transcript of your interaction. Before ending your session, request that the AI output the complete transcript, and save this to a file for submission.

For browser-based AI tools (e.g., ChatGPT, Claude web interface):

Download the entire conversation transcript using the platform's export or download feature. If the platform does not offer a direct export, copy the full conversation into a text or PDF file. Submit the complete transcript—do not edit or truncate it.

If you use multiple AI sessions or tools for a single assignment, you must submit transcripts from all sessions. Label each transcript clearly with the tool used and the date/time of the session.

Required Interaction Protocols

Some assignments may require you to use a specific prompt header or interaction protocol when working with AI tools. For example, an assignment might require you to begin your AI conversation with a specific prompt that establishes context or constraints. If an assignment specifies such a requirement, you must use the provided prompt header or follow the prescribed interaction protocol. Failure to do so constitutes a violation of the AI Policy and will be treated accordingly.

Recommended AI Models

While there are cheaper and free options available, we want CS 128 students to be exposed to the best available AI technologies—so-called frontier models. At present, the most capable AI coding tools are substantially more effective than inferior models, but they do require a paid subscription.

We recommend that students consider purchasing a monthly subscription to Claude Code for use throughout the semester. As an approximate price point, one month of Claude Code Pro costs $20. Given that the semester spans approximately four months, students should anticipate a total cost of roughly $80 for access to this tool. We believe that you will benefit greatly from this investment in exposure to the future of programming—and more importantly, from learning how to use these tools effectively and responsibly while you are still in an educational environment where we can guide that development. However, other AI tools such as ChatGPT, GitHub Copilot, or similar may also be used in accordance with the AI Policy.

Academic Integrity and Accountability

You are responsible for understanding everything you submit. The transcript you submit with each assignment allows us to verify how you engaged with the AI. Discrepancies or policy violations will result in a FAIR referral.

If your transcript shows that you asked the AI to complete the assignment rather than to help you understand it, this constitutes a violation of course policy—even if you submitted the reflection form and transcript. Submitting documentation does not grant permission to misuse the tools; it creates a record of how you used them.

Using AI tools without submitting the corresponding AI Usage Reflection Form and transcript constitutes an academic integrity violation. Students found to have used AI assistance without proper documentation will be referred to FAIR.

Undocumented or inappropriate AI usage will be subject to the sanctions described in the Academic Integrity section of this syllabus. We have sophisticated methods for detecting AI-assisted code, and we will be monitoring submissions throughout the semester. Students whose transcripts suggest they used AI to avoid learning rather than to support it will be referred to FAIR, regardless of whether they submitted the required documentation.

If you use AI, document it. You must submit the AI Usage Reflection Form within 24 hours of the assignment deadline.

Attestation

By submitting the AI Usage Reflection Form, you affirm that:

  1. The information provided on the form is accurate and complete.
  2. The submitted transcript(s) represent the complete and unaltered record of your AI interactions for this assignment.
  3. 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.
  4. You acknowledge that quizzes must be completed without AI assistance and that your performance on quizzes reflects your genuine understanding of the course material.

Do not "vibe code"

In a previous semester, we flagged approximately 150 students whose submissions exhibited patterns consistent with AI-generated code produced with minimal understanding. When we examined the quiz performance of these students, we found that their median quiz score was 30 percentage points lower than those who were not flagged. More critically, the median score for students who relied heavily on AI-generated submissions was not passing.

This outcome should not be surprising. The students who allowed AI to do their thinking for them arrived at the quiz unprepared to think for themselves.

Vibe coding and outsourcing your work to AI are academic integrity violations. The following behaviors constitute violations of this policy and will be referred to FAIR, regardless of whether you submit the AI Usage Reflection Form and transcript:

  • Asking AI to complete an assignment or produce a solution for you
  • Asking AI to "write a function that does X" or similar prompts that request AI to produce code you should be writing yourself—even if you understand the result
  • Generating code through prompts like "make this work" or "fix this" without understanding the result
  • Submitting AI-generated code that you cannot fully explain line by line
  • Iteratively prompting AI until tests pass without comprehending what changed or why

Submitting documentation does not legitimize misuse of AI tools—it creates a record of how you engaged with them. If that record shows you used AI to bypass learning rather than to support it, you will be held accountable.

The Consequence of Disengagement

Quizzes are the largest component of your final grade. If you do not honestly complete the assignments, you will not perform well on the quizzes, and by consequence, you will not do well in the course. There is no shortcut around this reality. The catch-up quiz grading policy can help you recover from a poor performance if you subsequently demonstrate mastery, but it cannot recover knowledge that was never built.


Academic Integrity

The University of Illinois at Urbana-Champaign Student Code (studentcode.illinois.edu) should also be considered as a part of this syllabus. Students should pay particular attention to Article 1, Part 4: Academic Integrity (studentcode.illinois.edu/article1).

Academic dishonesty will result in a sanction proportionate to the severity of the infraction, with possible sanctions described in 1-404 (studentcode.illinois.edu/article1/part4/1-404) of the Student Code (studentcode.illinois.edu). Every student is expected to review and abide by the Academic Integrity Policy (studentcode.illinois.edu/article1) as defined in the Student Code. As a student it is your responsibility to refrain from infractions of academic integrity and from conduct that aids others in such infractions. Review the Students' Quick Reference Guide to Academic Integrity (provost.illinois.edu/policies/policies/academic-integrity/students-quick-reference-guide-to-academic-integrity/). Ignorance of these policies is not an excuse for any academic dishonesty. It is your responsibility to read this policy to avoid any misunderstanding. Do not hesitate to ask the instructor(s) if you are ever in doubt about what constitutes plagiarism, cheating, or any other breach of academic integrity. It is imperative that each student clearly understand those rules and the severe consequences that can result from the adjudication of an Honor Code Violation.

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."

Every student should understand that complicity—helping or attempting to help another student commit an act of academic dishonesty—also constitutes academic dishonesty and carries the same consequences as cheating.

In other words, if you provide your solution to another student—even if that student never submits it—you have committed an act of academic dishonesty. Both students will be subject to the same penalties.

Writing, inserting, or otherwise modifying code or comments to reveal hidden test cases, or to circumvent or bypass our auto-grader in any way, is considered an academic integrity violation. You may never hard-code against the test cases in our suite.

Students have previously defended FAIR violations by claiming that a friend or peer accessed their solutions while their device was left unattended or loaned out. This is not a valid defense. It is your responsibility to secure your coursework and protect your device. If another individual accesses your work due to negligence on your part, you will still be held 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 sanctions as outlined below. You may not:

  • Submit work completed by anyone other than yourself.
  • 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.
  • Share or discuss the content of quizzes or other private course assessments.
  • Publish your MPs or coursework in any location where other students could access them.
    Note: This includes posting assignments publicly on GitHub. If you want to showcase your skills to employers, use your GitHub portfolio for independent projects, not course work.
  • Email, message, or otherwise share your code with anyone in this class now or in future semesters.

All submitted work will be analyzed using advanced cheating-detection software. These tools are highly accurate, and any evidence of plagiarism or academic dishonesty will immediately initiate formal academic integrity proceedings. We take this very seriously, and you should as well.

Important: Course staff (CAs and TAs) are not responsible for warning you about potential policy violations. It is solely your responsibility to know and follow the course's academic integrity rules. If you are ever uncertain about what is allowed, you must seek clarification directly from the instructor via the course forum before collaborating with another student, using an AI tool without proper documentation (see the AI Policy for CS 128), or seeking outside assistance on any assignment.

Plagiarism

Plagiarism is the presentation of someone else's work as your own. Submitted work will be examined for plagiarism using computer software designed for that purpose. We compare your code with every other student's code, student submissions from previous semesters, and code from easily accessible repositories found on the internet. If there is a high similarity between your code and another student's code (or code from online solutions), and we believe it is more probable than not that an academic integrity violation has occurred, we issue a FAIR violation. It is assumed that college students know what is honest and what is not.

Self-plagiarism

Self-plagiarism is reusing the work you have already submitted to a class. In CS 128, you cannot reuse/submit work you've completed during a previous semester. Instead, you need to think through the problems and compose new solutions. Past performance is typically indicative of future performance. Sitting out and disengaging while resubmitting old work is unsuitable for your learning. Accordingly, I will only allow submissions of a past semester's work if one has an extraordinary circumstance. For example, if one had to withdraw due to medical reasons. This policy is not meant to be harsh or otherwise; I sincerely want you to do well in my class and future courses in our program. Therefore, to encourage learning, I can only allow you to submit codes from a previous semester this semester if you have an extraordinary circumstance that I consider and subsequently decide to approve in writing.

Accordingly, if you are retaking the course this semester, you will need to compose solutions without any reference to your work from the previous semester. Failure to follow our self-plagiarism policies will result in a FAIR referral. Simply do not review your solutions from a previous semester, and you should be good.

Policies on Collaboration

Machine Problems

No collaboration with other students or outside individuals is permitted on Machine Problems (MPs). If you have questions about your solution, approach, or anything else related to an MP, you may seek help from course staff during office hours or use AI tools in accordance with the AI Policy for CS 128.

AI tools may be used to support your learning on MPs, but you must follow all requirements in the AI Policy, including submitting the AI Usage Reflection Form and complete transcripts. Using AI to produce code that you do not understand, or failing to document your AI usage, constitutes an academic integrity violation and will be referred to FAIR.

Searching for or using solutions from the Internet (e.g., GitHub, Chegg, Course Hero) is an act of cheating. If you are found to have viewed or submitted code obtained online, you will be referred to FAIR for an academic integrity violation.

We will not tolerate plagiarism or complicity. Providing or receiving unauthorized assistance will result in severe consequences. Do not risk it.

Graded Lessons

Exchanging or soliciting ideas about how to solve a graded lesson's activity is not cheating, but submitting another's code is cheating. Feel free to discuss your solutions with other students as long as you do not provide them your source code. AI tools may be used in accordance with the AI Policy for CS 128.

Sanctions

If you are caught cheating in CS 128 you will (without question) receive a FAIR violation. The penalty for the first infraction will be:

  • A letter grade reduction in the class and a zero score on each assessment involved in the violation.

For a second offense or extreme act affecting other students:

  • An F in the course.

Please note that these sanctions deviate from the departmental recommendations.


Additional Policies

Style Guide

In this course, we will use the Google C++ Style Guide (google.github.io/styleguide/cppguide.html).

Copyright Statement

Course Materials

The course materials used in this course are copyrighted. All material prepared for this class is copyrighted; this includes the syllabus, lecture slides and notes, exams, machine problems, lab work activities, etc. Given that all course material is a copyrighted work, you do not have the rights to copy or distribute the course material, unless the author expressly grants such permission.

Recording

Students may not record audio or video of any course activity unless the student has an approved accommodation from Disability Resources & Educational Services permitting recording. This accommodation letter must be presented to the instructor in advance of any recording being done. Students who are allowed to record classes 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/staff members who are recorded.

Classroom Climate

Our course goals can only be accomplished in a setting of mutual respect. Your instructors are committed to creating a classroom environment that welcomes all students, regardless of their identities—race, class, gender, sexual orientation, religious beliefs. We value diversity in all of its definitions, including who we are, how we think, and what we do. We cultivate an accessible, inclusive, and equitable culture where everyone can pursue their passions and reach their potential in an intellectually stimulating and respectful environment. The effectiveness of this course is dependent upon each of us to create a safe and encouraging learning environment that allows for the open exchange of ideas while also ensuring equitable opportunities and respect for all of us. 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, you are encouraged to bring this to the attention of the course instructor. Please let us know if there is anything we can do to make sure everyone is encouraged to succeed in this class.

Our Values and Code of Conduct

All members of the Illinois Computer Science department (faculty, staff, and students) are expected to adhere to the CS Values and Code of Conduct. The CS CARES Committee is available to serve as a resource to help people who are concerned about or experience a potential violation of the Code. If you experience such issues, please contact the CS CARES Committee. The instructors of this course are also available for issues related to this class.

Religious Observances

Illinois law requires the University to reasonably accommodate its students' religious beliefs, observances, and practices with admissions, class attendance, and the scheduling of examinations and work requirements. Therefore, we recommend that students examine each syllabus at the beginning of the semester for potential conflicts, notify the instructor/professor, and follow their directions on how to request accommodations.

This class requires students to notify the instructor via email of any class activities or assessments affected by a religious observance. To best facilitate planning and communication, you must notify your instructor within the first two weeks of classes for the semester in which any accommodations request applies.

DRES Accommodations

If you have DRES Accommodations, it is required that you formally submit your letter of accommodations for this course. Instructions on how to fulfill this requirement will be found on the Start Here page. We must receive your accommodations letter before you start using them. It's important to note that we won't be able to apply accommodations retroactively in any situation.

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 and/or auxiliary aids, students with disabilities must contact the course instructor and the Disability Resources and Educational Services (DRES) as soon as possible. To contact DRES, you may visit 1207 S. Oak St., Champaign, call 333-4603, e-mail [email protected] or go to https://www.disability.illinois.edu. If you are concerned you have a disability-related condition that is impacting your academic progress, there are academic screening appointments available that can help diagnose a previously undiagnosed disability. You may access these by visiting the DRES website and selecting "Request an Academic Screening" at the bottom of the page.

Computer Requirements

Please ensure that you have a laptop device that meets the College of Engineering's recommendations (https://techzone.illinois.edu/site_engineering_recommendation.asp), with either Windows, Mac, or Ubuntu operating system, and the Google Chrome web browser (used to access our website) installed.


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 and 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