Course Syllabus – Consult As Needed

Introduction to Computer Science II

Spring 2022 | CS 128
University of Illinois Urbana-Champaign


Michael R. Nowak|Teaching Assistant Professor
Department of Computer Science, University of Illinois at Urbana-Champaign
[email protected]|+1 (217) 244-8894|

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

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 each lesson, which are designed to reinforce the material that you have been learning about.

Synchronous Class Meetings

Lab-Discussions on Fridays

On Fridays you will attend the lab and will work collaboratively with a partner on interactive exercises and problem sets. Each lab will be choreographed by a facilitator who will introduce the activities and answer your questions.

Other Synchronous Programs Available

Office Hours and Help Sessions

All course staff participate in running online office hours on the online help site. Both group and individual help sessions will be available, with available course staff dropping by periodically to offer suggestions and advice. Office hour times are posted on the course calendar (

Additional Programs

CS 128 staff run many regular programs. Topics include new and old homework review, conceptual content, and quiz preparation. Program times and details will be posted on the course calendar.

Note that CS 128 programs are not all just general help sessions. Some may be, but course office hours are the primary way to get help with a specific problem.

Getting Started

After completing the onboarding process, read the course syllabus ( and visit our getting started page (

Grading Scale

Course grades will be assigned according to this scale:

* You will fail this course if you earn below 60.0% of the total available points.
Minimum % of
Total Points Earned
93.0% 90.0% 87.0% 83.0% 80.0% 77.0% 73.0% 70.0% 60.0%
Letter Grade A A- B+ B B- C+ C C- D

Method of Evaluation

Course grades will be calculated using the following weights:

* With the exception of the Machine Problem category, no categories will overflow—you cannot earn more than the total number of available points for each respective category.
* We reserve the right to modify these weightings during the semester.
Category % Contribution Category % Contribution
Machine Problems 55% Graded Lessons 15%
Laboratory Assignments 15% Weekly Quizzes 15%

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 (, this is within one-week from the assignment due date (not the late due date).
  • For lab attendance, this is within one-week past the lab period for which attendance is challenged / requested review.

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.

Machine Problems

No Collaboration Allowed
  • You must individually compose your solution to these assignments; no collaboration is allowed.
  • A new machine problem will be released every Friday.
  • Our machine problems are designed for students to incrementally develop their solutions over the course of one week
    • Waiting until the due date -- or a couple of dates prior to the due date -- to begin these assessments inevitably results in poor outcome.
  • Each week’s MP increases in difficulty and sophistication from the previous week’s MP.
  • All machine problems are automatically graded by the PrairieLearn autograder:
    • You will have the opportunity to earn partial credit by passing some of the test cases; however,
    • non-compiling solutions will not be awarded any points.
  • Submission Policy: Each Machine Problem is worth 100 points and will have TWO (2) submission deadlines:
    • [CHECKPOINT] Checkpoint deadlines are strictly enforced, and are typically set to Tuesday directly following the MP's release by 23:59 central time.
      • Submission and Grading Details
        • The checkpoint deadline is worth 10 of the 100 points available for the MP.
          • The checkpoint deadline points are awarded only if you obtain 10% or more of the assignment's test case points. No partial credits are awarded and non-compiling solutions will not be awarded any points.
        • There will be a separate submission window titled "Checkpoint." You will submit to that submission window for the checkpoint credit.
          • Submitting a perfect solution to Checkpoint Window will only grant you 10 of 100 points; you will get the deadline credit (90 points) only when you submit this solution again to Deadline Window.
      • Late Policy
        • No late checkpoint submissions will be accepted. No exceptions.
        • If you do not earn the checkpoint deadline points, the most you can earn on the assignment is 90 points: you will forfeit checkpoint credit.
    • [DEADLINE] The assignment deadline will be the Thursday following the assingment's release by 23:59 central time.
      • Submission and Grading Details
        • Your assignment deadline submission is worth 90 of the MP's 100 points
        • There will be a separate submission window titled "Deadline." You will submit to that submission window for the deadline credit.
        • For some MPs, we may require you to submit your test cases, in which case part of those 90 points will be dedicated to the test cases submission
          • For MPs with Test Case submissions, there will be a separate window for Test Cases (which results in 3 different submission windows – Checkpoint, Deadline, and Test Cases).
          • Test Cases Window deadlines are identical to Deadline Window deadlines and follow the same late policy.
      • Late Policy
        • We strongly encourage you to complete all MPs well in advance of deadline; however, each machine problem will be accepted up to three-days past the due date with a grade cap imposed.
        • If you submit within 24-hours past the deadline (i.e., one day late), your grade for the deadline credit will be capped at 92%.
          • For example, for MPs without Test Cases, the credit cap would be 90 pts * 0.92 = 82.8 pts.
          • Therefore, if you submit late and receive 100% from our autograder, the grade awarded will be 92% of the full deadline credit (i.e. 82.8 pts in this case).
          • You would receive the same score if you received 92% from our autograder.
          • If the credit you had received pre-deadline was higher than the post-deadline, with-deduction credit, you will keep the higher credit (i.e. will not hurt your previous credit)
        • If you submit 24-hours past but within 48 of the deadline (i.e., two days late), your deadline credit will be capped at 84%.
        • If you submit 48-hours past but within 72 of the deadline (i.e., three days late), your deadline credit will be capped at 70%.
        • Past three-days late (i.e, 72 hours past the due date), you will not receive any deadline credit for the assignment.
      • Provided you have satisfactorily met the checkpoint (i.e., received full checkpoint points), if you submit a solution earning full credit before 23:59 on the Wednesday directly following the release of the MP, you will receive 5% extra credit points for an assignment total of 105%.
      • 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 (
        • This is a "No Questions Asked" waiver that is available for everyone.
        • You can elect at most TWO (2) Machine Problems. Note, this is not automatic and you are not required to use these waivers should you choose not to.
        • Once you elect the assignment, you cannot undo the action — we want you to use this as a flexibility when "life happens" events occur. Choose wisely and plan ahead.
      • Important details about checkpoints
        • Your overall score will be recalculated as if the checkpoint slot was not present regardless of if you completed the checkpoint within the Checkpoint deadline.
        • For example, given an MP with Checkpoint (10 pts), Deadline (82 pts), and Test Cases (8 pts), your score would now be the percentage equivalent of (Deadline + Test Cases) / (82 + 8). The checkpoint submission slot becomes irrelevant.
        • As an additional example, consider an MP with Checkpoint (10 pts) and Deadline (90 pts). Your score would now be the percentage equivalent of (Deadline) / (90). Again, the checkpoint submission slot becomes irrelevant.
      • Without exception, students must make their late penalty waiver elections by April 30.
      • For any MP you've elected a late penalty waiver, you must submit the assignment to PrairieLearn by 11:59 pm central time on April 30.
      • The late penalty waiver will not show in PrairieLearn in real-time. Therefore, late submissions will reflect the earned score with our late penalty.
      • Staff will begin waiving late penalties per your extension elections during the first week in May.

Weekly Quizzes

No Collaboration Allowed
  • You must take the quiz by yourself; no collaboration at all is allowed.
    • If you are caught cheating on a quiz, you will receive a FAIR violation and the prescribed penalty will be a failure of this course.
  • Every Friday at 05:00 central time, we will release a quiz for you to take on the material presented that week; content from previous weeks may also present on the quiz.
    • It is your responsibility to complete the quiz within the window provided.
    • You will access the quiz through the course website (navigate to "Quiz" from the navigation menu).
  • Quizzes consist of a mixture of multiple-choice questions, programming questions, and debugging challenges. Programming problems may be adaptations of previous lesson activities.
  • The best way to prepare for a quiz is to complete the lessons:
    • Watch the videos and walkthroughs, complete the programming activities and multiple-choice questions.
  • You must complete the weekly quiz by 23:59 central time the coming Monday.
  • Each quiz will contribute equally to the weekly quiz component of your final grade.
  • Submission policy: Each quiz will specify the amount of time and number of submissions you have been allocated. Quiz time limits have already been expanded to account for students with accommodations. Your final score will be that recorded as the maximum score across all submissions. For most quizzes, you will have
    • one or two attempts at the multiple choice questions,
    • unlimited attempts at the programming problems and debugging challenges (without losing credit), and
    • a limited amount of time to complete the assessment (once you start, the timer does not stop).
  • Late policy: You must complete the quizzes by their due date. Do not contact the course staff regarding missed quizzes. In order to accommodate illness and other potential excused absences throughout the semester, we will drop three (3) quizzes when computing the quiz component of your final grade.

Graded Lessons

Limited Collaboration Allowed
  • A lesson is considered a graded lesson if it has at least one programming activity and/or question.
    • Therefore, the interactive coding activities and multiple-choice questions interspersed throughout the daily lessons are graded.
    • You may work through the lesson programming activities and questions together, but each person must compose/determine/derive their own solution.
    • We expect you to complete these activities and questions the same day that the lesson was released.
  • Submission policy
    • Within a graded lesson,
      • each programming activity and question will specify their individual point value and the number of submissions you have been allocated for that activity/question;
      • your score for each activity/question will be recorded as the maximum score across all submissions of that activity/question.
    • Your score for the graded lesson will be the number of points that you've earned out of the maximum number of points available within that lesson; each graded lesson contributes equally towards the graded lesson component of your final grade.
    • Due date: A lesson week is defined as the lessons assigned within a Monday through Friday period. All graded lessons within a lesson week are due on the Friday within that period by 23:59 central time.
  • Late policy: You must complete these activities by their due date. Do not contact the course staff regarding a missed graded lesson. In order to accommodate illness and other potential excused absences throughout the semester, we will drop five (5) graded lessons when computing the graded lesson component of your final grade.

Laboratory Assignments

Collaboration Required
  • [Revision 1/25] Lab attendance is no longer mandatory for the Spring 2022 semester: your lab grade will be the score you've earned on the lab activity; we will no longer multiply that score by your attendance record. If you are not comfortable working in a group, you are no longer required to do so.
  • Laboratory assignments will be assigned during the lab period and will be due the Thursday following the assignment's day of release by 23:59 central time.
  • We expect and require you to collaborate in small groups on these activities.
  • It is your responsibility to follow any attendance procedures established by your lab facilitator, to check in with your lab facilitator accordingly, and to confirm that your lab facilitator has marked you as present (verify your attendance for each lab on the course website).
    • You forfeit the lab assignment points of the lab if you do not attend (i.e., for any lab you are not marked present for attendance).
    • We multiply your attendance as a bool (present == 1; absent == 0) by your lab assignment grade that is recorded in PrairieLearn.
      • Being absent is multiplication by 0, resulting in a zero grade on the assignment irrespective if you completed it and turned it in.
      • Being present is multiplication by 1, resulting in your earning of the assignment grade recorded in PrairieLearn.
    • Attendance and your responsibility to confirm it is part of the pedagogy of the laboratory assignments.
  • The purpose of these assignments is to engage the material with your fellow students, hear their perspectives and share your own through lively discussion, and reinforce/clarify topics and concepts taught in the lessons.
    • Therefore, completion of an exercise is only part of that assessment’s pedagogy; working together and being marked present in the lab is the other part.
    • You forfeit the lab assignment points of the lab if you complete the activity prior to your lab session or for failure to collaborate with your group: we require you to actively participate and work on these assessments during the lab period.
  • Exact lab formats are subject to change on a week-by-week basis, but the collaborative nature will be maintained throughout the semester.
  • Late policy: You must complete the laboratory assignments by their due date. Do not contact the course staff regarding missed laboratory assignments. In order to accommodate illness and other potential excused absences throughout the semester, we will drop three (3) laboratory assignments when computing the laboratory assignment component of your final grade.

Style guide

In this course, we will use the Google C++ Style Guide (

CS 128 and PrairieLearn

In this course, you will submit your MPs and lab activities 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 will need to log out and back in using your NetID account to access your other classes.

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.

There are two primary sources of information for CS 128:

  1. This website
  2. The course forum at

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.

When addressing your professor on the course forum, in an email correspondence, or otherwise, should you choose to use an honorific, the correct honorific is Professor, abbreviated Prof. I recognize that the world today is more casual than ever before. While I am not bothered when students address me by my first name, some of my colleagues might be. To keep things formal and professional, please use my formal honorific (i.e., Prof) with my last name to address me in my course. You should address your other instructors accordingly unless they ask you directly to address them differently. When addressing a graduate TA, I suggest using the honorific Mr./Ms. unless your TA tells you otherwise.

What You’re Responsible For

You are responsible for email sent to your 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
Course forum is your primary point of contact with the staff.

You may think that the professor spending five minutes responding to your email is not a huge problem. Five-minute responses to 100s of students can consume many hours though. We kindly ask you to post to the course forum.

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

Here is a 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 the course forum.

In contrast, here are some 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.
That said, we're here for you when you need us.
Multilingual Staff Members

Course materials can get hard. It can be even harder when you are not learning in your native language. If you feel like you are getting nowhere because of the language barrier, we may have a staff member that speaks your language. Look for the staff member in the directory that speaks your language, and feel free to email them directly to seek help.

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 note 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 fix it and ensure that all students receive full credit or are given an opportunity to rectify the problem at our discretion—even those that took the quiz 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.

Academic Integrity

The University of Illinois at Urbana-Champaign Student Code should also be considered as a part of this syllabus. Students should pay particular attention to Article 1, Part 4: Academic Integrity. Read the Code here.

Academic dishonesty will result in a sanction proportionate to the severity of the infraction, with possible sanctions described in 1-404 of the Student Code. Every student is expected to review and abide by the Academic Integrity Policy 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. A short guide to academic integrity issues may be found here. 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."

In particular, 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 punishment as cheating.

  • In other words, if you provide your solution to another student, even if that student does not turn it in for credit, you have committed an act of academic dishonesty and will both be subject to the same consequences.

Furthermore, writing, interjecting, or otherwise, codes and/or comments to circumvent our auto-grader / bypass any tests cases is considered an academic integrity violation.


All work submitted to this course must be your own. Cheating in this course will result in a grade reduction, your removal from the CS program, or from the University of Illinois. Specifically, the following activities constitute cheating and will be dealt with according to relevant departmental and university policies. You may not:

  • Turn in work that was completed by anyone other than yourself.
  • Copy or paste code that you did not write from any source.
  • Misrepresent your work as the work of another student.
  • Examine another classmate's solution, reproduce it, and submit it as your own work.
  • Share information about the content of quizzes or other private course assessments.
  • Publish your MP or coursework anywhere where other students can find them. Note that this includes publishing your MP publicly on GitHub. If you want to impress employers, fill your GitHub page with your own independent projects.
  • Email or share your code with anyone in the class now or in future semesters.

We will run cheating detection software on all submitted student work. These programs are extremely accurate, and any evidence of cheating that they uncover will initiate academic integrity violation proceedings. We are serious about this, and ask you to be serious about learning. If you want to learn more about how accurately this software detects cheating and plagiarism, read this article.

A Simple Rule of Thumb about Collaboration

A general rule of thumb is that exchanging or soliciting ideas about how to solve the MP is not cheating, but exchanging code is cheating. Feel free to discuss your solutions with other students as long as you do not provide them or allow them to view your source code. If you are talking in English or another spoken human language that's fine. If you are exchanging computer code, that's cheating. Refer to the assignment-specific section of the syllabus for more information on what is allowed and what is not.

Looking at the documentation or finding out how a method works are not considered cheating. If you ever find yourself copying and pasting, this is problematic. If you find inspiration in doing something, make sure you adapt it, make it your own, and cite the source. After this exercise, your implementation should look very different from the inspired source.


If you are caught cheating in CS 128 you will (without question) receive a FAIR violation. Depending on the severity of the situation, you may also have any of the following penalties (or otherwise) applied:

  • A letter grade reduction in the class. Note that this will likely make it impossible for you to transfer into the Computer Science department.
  • An F in the course. This will definitely make it impossible for you to transfer into the major.

Plagiarism is the presentation of the work 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 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. Moreover, examinations are meant to measure the knowledge or skill of each individual, so giving or receiving unauthorized assistance during tests and quizzes is cheating. It is assumed that college students know what is honest and what is not.

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

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.

Computer Requirements

Please ensure that you have a laptop device that meets the College of Engineering's recommendations (, with either Window, Mac, or Ubuntu operating system, and the Google Chrome web browser (used to access our website) installed.

Tentative Schedule

Week Topics
1Introduction to C++
2Introduction to C++ cont. + course toolchain
3Formal and informal testing
4Compound types (pointers, references, arrays), classes
5Classes; streams and input validation
6Data representation, files, and the filesystem
8Dynamic memory in classes; vectors and lists
9Generic programming using templates; inheritance and polymorphism
12Select topics on modern C++ (eg. smart pointers)
13Design patterns
14Functional-style programming in C++
15Concurrency in C++
Version: Rev 2022-01-07T22:10:20Z