Syllabus

Course Syllabus – Consult As Needed

Introduction to Computer Science II

Spring 2024 | CS 128
University of Illinois Urbana-Champaign

Instructors

Prof. Michael R. Nowak|Teaching Assistant Professor
Department of Computer Science, University of Illinois at Urbana-Champaign
[email protected]| Office: 2338 Siebel Center for Comp Sci | +1 (217) 244-8894|michaelrnowak.com

Prof. Jule Schatz (you-la-shots)|Teaching Assistant Professor
Department of Computer Science, University of Illinois at Urbana-Champaign
[email protected]| Office: 2330 Siebel Center for Comp Sci | juleschatz.com

See the Course Communication section of the syllabus. In the cases where email is appropriate, to contact a course instructor, please use the [email protected] address. Do not email instructors individually through their [email protected] account: we are using a shared email account for consistency in our responses to students this semester.

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

Getting Started

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

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 Your Profs

"Meet Your Profs" is the time to have informal discussions with your CS 128 professors! We will post the dates-times of these events to the course calendar (cs128.org/calendar). "Meet Your Profs" is not a content-help zone; it’s a space for open conversations, questions about our experiences and insights, and a chance for us to get to know each other. Whether you’re curious about our career journeys, want advice beyond the syllabus, or simply wish to connect, "Meet Your Profs" is the place to do it.

Getting Help

Office Hours

All course staff participates in running online office hours on the online help site (queue.cs128.org). 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.

General Grading

Only exceptional performance will constitute an A grade. If you're okay with just getting by or are a quiet quitter, this course will likely be too fast-paced for you.

Grade 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
Machine Problems 55%
Quizzes 25%
Graded Lessons 10%
Recitation 10%

Final Grade Modifiers

You must earn at least 67% on each machine problem to become eligible for a course grade higher than a B+. Suppose you fail to submit any solution that earns at least 67% for some machine problem. In that case, the maximum grade you are eligible for in this course is a B+. Late submissions are considered submissions, so please take advantage of our late policies to meet this modifier's stipulation. This policy effectively caps your grade at a B+ should you not earn at least 67% on each MP. To receive an A-block grade, you must get at least 67% on each machine problem and meet the "Minimum % of Total Points Earned" for an A-block grade.

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. Search the academic calendar for "Last day of instruction".

Machine Problems (MPs)

No Collaboration Allowed
  • Please treat a machine problem as an exam or quiz. You must individually compose your solution to these assignments; no collaboration is allowed.
  • A new machine problem will be released bi-weekly on Friday.
  • Machine problems are also called MPs throughout this document and the course.
  • Our machine problems are designed for students to develop their solutions over one week incrementally; this semester, you'll have two weeks to complete each MP.
    • Waiting until the due date -- or a couple of dates before the due date -- to begin these assessments inevitably results in poor outcomes.
  • Each MP increases in difficulty and sophistication from the previous 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 (the only exception is the pre-flight):
    • The assignment deadline will be the second Thursday following the assignment's release by 23:59 Champaign local time.
    • Late policy:
      • We strongly encourage you to complete all MPs well in advance of the deadline; however, each machine problem will be accepted through the semester's last day of instruction with a grade cap imposed.
      • If you submit past the deadline, your grade for the deadline credit will be capped at 67%.
    • Extra credit
      • If you submit a solution earning full credit before 23:59 Champaign local time on Friday directly following the release of the MP, you will receive 5% extra credit points for an assignment total of 105%.
    • 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/cs128).
        • 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.
        • 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.
      • Without exception, students must make their late penalty waiver elections 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 show in PrairieLearn in real time. Therefore, late submissions will reflect the earned score with our late penalty.

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.

Quizzes

No Collaboration Allowed

Our quiz polices are taken nearly verbatim from CS 124 (thanks for sharing, Prof. Challen!). CS 128 quizzes consist of a mixture of multiple-choice questions, programming questions, and debugging challenges. All questions are automatically graded.

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 on the discussion forum after the quiz ends, usually meaning at least one day later than the CBTF end date (as defined below).

Please note the following about quizzes in CS 128:

  • Quizzes are cumulative from the first day of instruction through the day before the CBTF start date for a respective quiz (see the table below for these dates).
  • This course uses the Grainger College of Engineering’s Computer-Based Testing Facility 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) for quizzes, please submit your Letter of Accommodations (LOA) here before you make your first quiz reservation. This must be done each semester you use the CBTF.
  • If you have any issue during an 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 before your first quiz: https://cbtf.illinois.edu/students
Quiz schedule

You have to schedule your quiz time within the CBTF start date and CBTF end date. You can begin reserving your spot in the CBTF on the CBTF self-reserve day.

In the table below,

  • CBTF start date is the start of the exam window in the CBTF testing center,
  • CBTF end date is the end of the exam window in the CBTF testing center, and
  • CBTF self-reserve is the day you can start self-reserving in the CBTF testing center.
Name CBTF start date CBTF end date CBTF self-reserve
Quiz #1 2024-01-25 00:01:00 (CST) 2024-01-28 23:59:00 (CST) 2024-01-11 00:00:00 (CST)
Quiz #2 2024-02-08 00:01:00 (CST) 2024-02-11 23:59:00 (CST) 2024-01-25 00:00:00 (CST)
Quiz #3 2024-02-22 00:01:00 (CST) 2024-02-25 23:59:00 (CST) 2024-02-08 00:00:00 (CST)
Quiz #4 2024-03-05 00:01:00 (CST) 2024-03-08 23:59:00 (CST) 2024-02-22 00:00:00 (CST)
Quiz #5 2024-03-28 00:01:00 (CDT) 2024-03-31 23:59:00 (CDT) 2024-02-29 00:00:00 (CST)
Quiz #6 2024-04-11 00:01:00 (CDT) 2024-04-14 23:59:00 (CDT) 2024-03-28 00:00:00 (CDT)
Quiz #7 2024-04-25 00:01:00 (CDT) 2024-04-28 23:59:00 (CDT) 2024-04-11 00:00:00 (CDT)
Quiz format
  • Quiz questions are a mix of conceptual questions drawn from lesson content and small programming problems. Programming problems may be drawn from previous lesson activities or appear later.
  • You have unlimited attempts at the programming problems and debugging challenges without losing credit. At this stage, we want you to practice—and we won’t penalize you for doing so. However, obviously you do not have an unlimited amount of time to complete the quiz.
  • The conceptual questions should be easy if you have been following along with the daily lessons. You may find the programming questions and debugging challenges more challenging. Programming under time pressure can be difficult and stressful. You don’t have unlimited time or access to resources such as the course staff or the internet. However, we believe that there are small programming and debugging tasks that you should be able to complete as the semester goes on without needing to look up things online or ask for help.
Missed Quizzes

Do not contact the course staff regarding missed quizzes. You must take them at the time you scheduled in the CBTF and not at some other time. We will drop your lowest quiz score (only one quiz will be dropped) when computing the quiz component of your final grade.

Catch-up Quiz Grading

The material in CS 128 is cumulative, and in large part each daily lesson build on the material covered previously. And, 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. If you do better on Quiz N + 1 than on Quiz N, we’ll increase your score on Quiz N to the average of the two scores. For example, let’s say you struggle on Quiz 3 and earn a 70, but then rally on Quiz 4 for a 90. Since your performance on Quiz 4 indicates knowledge of the material tested on Quiz 3, we’ll increase your Quiz 3 score to 80: (70 + 90) / 2. If you do worse on Quiz 4, your Quiz 3 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 Quiz N for us to apply it after you complete Quiz N + 1.

Finally, catch-up quiz grading does not ripple backward. So we increase you score on Quiz N because you did better on Quiz N + 1, we don’t then go back and adjust Quiz N - 1, and so on.

Reporting Quiz Problems

See the "Reporting Problems" section of this syllabus.

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 write their own unique solution. Please carefully read the academic integrity section of this document so that you understand what's allowed and what's not.
    • 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 Sunday directly following that lesson week by 23:59 Champaign local time. The only exception is that the last week of class's graded lessons will be due by 23:59 Champaign local time on the last day of instruction.
  • 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 ten (10) graded lessons when computing the graded lesson component of your final grade.

Recitation

Collaboration Allowed

Recitation is a time to review and practice applying the material learned during the week. The 75 minutes will consist of a short presentation, a group activity, and then open office hours. The activities will cover important extensions of the week's material that we think is vital for deeply understanding the course material. 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 10% of your final course grade. Please see the General Grading Section for the total breakdowns.

Your grade for recitation will depend on attendance and putting reasonable effort into the activity. There is no partial credit for a recitation session. You either attend and participate and get full credit or get a 0 for the week. Three (3) of your recitation grades for the semester will be dropped when calculating your final score.

Potential Reasons You Would NOT Receive Points for a Recitation
  • Leaving early during the worksheet or presentation section. If you finish the activity early and a staff member has checked off the work you may work on other things while you wait.
  • Being rude or disrespectful to group members or course staff.
  • Not working on the activity during the set time.
  • Arriving consistently late to class.

If you disagree with the grade you received based on the policy described above you have 1 week to dispute the grade with a professor (see email address above).

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

Style guide

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

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 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 or Prof. Schatz (shots)
  • 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.

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.

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 reveal test cases or to otherwise circumvent our auto-grader / bypass any test cases is considered an academic integrity violation. You may never hard-code against the test cases in our suite.

Moreover, in defense of FAIR violations, students have claimed that another student (typically a friend) stole their solutions while leaving their device unattended or on loan. We will no longer entertain this scenario as a defense against academic integrity violations. Therefore, it is your responsibility to ensure that your computer and coursework are secured should you leave your device unattended or loan it to another individual.

Cheating

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

Please note: the CAs and TAs have zero responsibility to warn you about potential policy violations; the responsibility to be aware of course policy, and what is allowed, is strictly that of the student. Suppose you have any questions about academic integrity or otherwise. In that case, you should seek immediate clarification from the instructor via a post made to the course forum before interacting with another student, an AI (never allowed), or otherwise on an assignment in any capacity.

Plagiarism

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.

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.

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

Policies on collaboration
Machine Problems

No collaboration with other human beings, AIs, or otherwise is allowed on the Machine Problems (MPs). The only exception to this rule is course staff members. If you have any questions about your solution, approach, or otherwise, course staff members can meet with you during office hours. You may not receive help from other individuals, including your classmates.

Searching for solutions on the Internet is cheating. If we catch you viewing or submitting a solution found on the Internet, we will request a failing grade as your FAIR sanction. We are serious about this. Don't cheat yourself. One should be serious about learning and completing these assignments independently as intended.

Likewise, we will not tolerate plagiarism or complicity. Again, the consequence of this will be severe. Please don't do it.

Graded lessons

Exchanging or soliciting ideas about how to solve a graded lesson's activity 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.

In general

You might look up how to do something in C++. For example, "How do I iterate through an std::map's keys?", "How do I clear the contents of an std::string?", "How do I preallocate memory for an std::vector?", etc. During such lookup, if you find inspiration from a source that is not directly associated with an assignment's prompt, should you adapt that code, be sure to make it your own, and cite the source. After this exercise, your code should look very different from the inspired source. Looking at C++ documentation is not considered cheating, provided you do not plagiarize it.

Penalties

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 and a zero score on each assessment involved in the violation.
  • An F in the course.

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.

In this class, we require students to procure an absence letter from the Office of the Dean of Students for any class activities or assessments affected by a religious observance. The Request for Accommodation for Religious Observances form allows for requesting such a letter. To best facilitate planning and communication, you must provide your instructor with the absence letter 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 the Start Here page. We must to 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 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.
3Navigating the command line; compilation and execution
4Build systems, version control, and software and errors
5Testing and debugging
6Compound types (pointers, references, arrays); user-defined types
7Streams and input validation; data representation
8Functions and the stack; the free store
9Dynamic memory in classes
10Linked lists; generic programming
11Inheritance and polymorphism
12Trees
13Graphs
14Design patterns; smart pointers
15Concurrency, networking, and databases
Version: Rev 2024-01-16