KotlinCS 124 LogoJava

Fall 2023 Syllabus

Overview
Overview

This course is an introduction to the concepts and craft of computer science. It will teach you to both think and act like a computer scientist. It will change how you approach problems and provide you with powerful tools that you can use to change the world for the better.

Computer science is both an applied and a conceptual discipline. You will learn how to program in this course, to allow you to bring your creative ideas to life. It can be frustrating at first. Computers are irritatingly literal machines.

But programming is a skill. You will get better with practice. And you will get practice. Lots of practice! Computers are one of the most powerful tools that we have at our disposal to solve almost any problem. Learning how to get them to do your bidding is extremely empowering. You will quickly come to understand the hacker’s lament. Once you can program well, you can do anything—but still not everything(1).

While programming is important and enjoyable, computer science has deep conceptual concerns at its core. You’ll learn to design solutions to problems so that computers can carry them out efficiently. We call these algorithms. Designing computer algorithms requires clarity and precision that will improve your ability to solve any problem. And then you get to build your solutions and deploy them to billions of people across the world. No other field has this potent mixture of left-brain analytics, right-brain creativity, and global impact.

Description and Prerequisites
Description and Prerequisites

From the course catalog:

Required Materials
Required Materials

There is no required textbook for CS 124. All the daily lesson materials are posted on this website.

Learning Objectives
Learning Objectives

CS 124 works on both conceptual and skill-based levels. We teach you how to think, and we teach you how to do.

Conceptual Objectives

When you finish this course, you will be able to:

OutcomeAssessment
Develop algorithms to effectively solve problems using computers—including both iterative and recursive algorithms—and reason about their computational and storage requirements.Class participation and quizzes.
Describe how computers represent, structure, and manipulate data—including numbers, strings, and multimedia data including images and audio.70% correctly identified marks outcome achieved.
Explain the importance of core Java or Kotlin software development concepts—including object orientation, object types, encapsulation, and inheritance.
Understand runtime and design tradeoffs between different algorithms, data structures, and data structure implementations.

Programming Objectives

When you finish this course, you will be able to:

OutcomeAssessment
Design and implement small and medium-sized Java or Kotlin programs that perform straightforward operations on simple data types, using iterative, object-oriented, and recursive approaches as appropriate.Machine project and daily homework.
Learn to use modern Java or Kotlin software development tools—including an integrated development and debugging environment (Android Studio), source version control (Git), test-driven development, coding convention tool (checkstyle or ktlint), build system (Gradle), and pair programming techniques.70% correctly identified marks outcome achieved.
Utilize standard Java or Kotlin features and libraries—including objects and simple built-in data structures.
Debug and test Java or Kotlin programs.
Use programming to solve problems in other domains.

Preparation
Preparation

CS 124 assumes no knowledge of computer science or prior programming experience. However, the course is a fair amount of work. Those looking for a gentler introduction may consider taking CS 101, CS 105, or CS 107.

Some students in CS 124 have no experience with computer science. Others have been programming for years. But our goal is for everyone to succeed! In Fall 2022, the grade gap between students with and without prior experience was only 2%, and 83% of students earned an A grade! Regardless of whether you’ve programmed before, you can succeed in CS 124.

If you’re new to computer science…

Welcome to the most exciting field on Earth! We’re extremely happy to have you. We know that it can be hard to get started, but trust us—you’ll get better with practice. Programming is a skill. The more you do, the better you get. If you’re willing to put in the time and energy, we’re here to help you succeed. And you will.

When you’re starting something new, it’s normal to occasionally feel frustrated or intimidated by those around you. We were all new once, and most of us try new things at least once in a while. So we know what it feels like. Just remember that no matter how it may seem, there are a lot of other students in CS 124 that are beginners too. And if you’re working harder than some other students in the class, then it just means that you’re learning more than they are.

Also keep in mind that computer scientists can get extremely excited about what they know. Our field is awesome, and we’re all learning new things all of the time. Unfortunately, sometimes that can come off as boasting or bragging. Don’t let it get you down. We want you to share in the excitement, and will do our best to make sure that happens.

If you kind of already know what you are doing…

There’s so much more to learn! No matter how much background in computer science you have, there are always new areas to explore, new languages to learn (like Kotlin!), and new problems to solve. Even if you don’t find every aspect of CS 124 challenging, we hope that it can continue to move you forward on your journey in computer science. Keep in mind that continuing to develop as a programmer requires practice. If the MP checkpoints don’t take you that long, then you aren’t getting the practice that you need to keep improving. You might want to join the honors section, get involved with the ACM (Illinois Chapter of the Association for Computing Machinery), or just make sure that you have some side projects to keep you busy.

And please feel free to help other students in the class that might not know as much as you. One of the best things about computer science is the community of generous and patient people willing to help beginners get started.

If you really know what you are doing…

Perhaps you should sign up for the CS 124 Proficiency Exam and bypass CS 124 entirely?

General Education Information
General Education Information

CS 124 meets the University of Illinois General Education Requirements in the Quantitative Reasoning 1 category.

FAQ
FAQ

Here are answers to some commonly-asked questions about CS 124.

I want to register for a lab, but it’s full? Or I want to switch labs. Can you help me?
I want to register for a lab, but it’s full? Or I want to switch labs. Can you help me?

No, sorry. We have absolutely no control over registration. You’ll need to talk to an academic adviser.

I added the course late. What do I do?
I added the course late. What do I do?

We have special instructions for you here.

Design
Design

CS 124 is designed to give every student a chance to succeed. Some aspects of the course design are unusual, but all help support high rates of student success.

CS 124 differs from other courses at the University of Illinois. Below we describe innovative components of the course design and explain the reasoning behind them.

Daily Lessons
Daily Lessons

CS 124 does not hold lectures.

Study after study has found that lectures are an ineffective way to teach. Learning requires active engagement, not passive watching(2).

In CS 124, you’ll learn through active engagement with our interactive daily lessons. Each lesson mixes text, runnable examples, interactive code walkthroughs (unique to CS 124), and short videos. Along the way you have many chances to test your knowledge through practice problems, debugging challenges, and homework exercises, with course staff supporting you every step of the way.

Daily lessons have many other advantages compared to lecturing. Returning to the content each day helps achieve spaced repetition, helping you learn even more efficiently. Students with different levels of prior experience can move at their own pace, which is impossible with one-speed-fits-all lecturing. This is particularly important in a course like CS 124, which enrolls students with a wide range of prior experience. Eliminating lecture space and time constraints has also allowed us to open up the course to anyone on campus.

We’ve also amassed a large and growing set of explanations from multiple instructors—Colleen and Geoff, and even some new faces from outside Illinois—and from course staff. So if you don’t understand something, there’s probably another explanation that might help.

Frequent Small Assessment
Frequent Small Assessment

CS 124 does not hold a final exam. Or a midterm. Or any high-stakes assessments.

High-stakes assessments like midterms and final exams encourage and reward cramming, which does not lead to knowledge retention. Infrequent assessment also allows students to go long periods of time without engaging with the content. We want you studying a small amount every day. So we assign a daily homework problem, and have you take a weekly quiz.

Frequent small assessment may be the most important component of student success in CS 124. We could fill pages about all of the benefits of this approach(3). When you study, you learn. Preparing for CS 124 quizzes will solidify your knowledge. Taking the quizzes will test your understanding, and provides important feedback for both you and us about what you know.

When you do poorly on a quiz, you have time to catch up, and should expect us to reach out to help as well. Many small quizzes means that each is less stressful, and allows you to recover from a bad assessment. It also allows us to implement learning-focused grading policies, including dropping low scores and catch-up grading.

Online Tutoring
Online Tutoring

CS 124 focuses on providing online tutoring. We do also run in-person tutoring sessions, but place more emphasis and staff time on supporting our online tutoring platform.

Our reasoning here is simple: We want to be there whenever you have a question! Due to our daily lesson format, we know that students are engaging with material at all hours throughout the day. This way, whenever you have a question, or a small doubt, or are curious about something, or confused, or frustrated, or need a bit of guidance—we’re always a click away. No need to wait hours or days for the next set of office hours. No need to trudge across campus into some basement or stand in line waiting to cram into some tiny office.

We will provide a variety of opportunities for students to connect with each other and with course staff, in both academic and social settings. But we also want to make it as easy as possible for you to ask questions and access support—wherever, whenever.

Autograding
Autograding

CS 124 submissions are autograded.

With a tiny number of infrequent exceptions, all work submitted in CS 124 is automatically evaluated and feedback returned immediately. Submitted code is examined to determine whether it performs correctly, meets our style guidelines, and for other aspects of code quality. The tools and systems used to do this were developed specifically for CS 124, and provide higher quality and more comprehensive feedback than other similar courses. All code submitted in CS 124 can be submitted an unlimited number of times without penalty—until you reach a deadline (homework or project) or run out of time (on a quiz).

We have embraced autograding for several reasons. It’s not just because the course is large. Autograding provides you with immediate and actionable feedback on your work. Correcting small mistakes isn’t something you only do when learning to program. Correcting small mistakes is most of what programming actually is. We want you to get good at it. The more mistakes you make, the more you’re learning.

Autograding also frees staff time to provide direct student support. Grading code by hand is difficult, boring, time-consuming, and slow, and most humans are terrible at spotting mistakes that are trivial to uncover through automated testing. Put another way: Humans are bad at evaluating code, and computers are good at it. We want the humans in CS 124 doing what humans are good at—working with you one-on-one to support your success in the course. And our autograding tools are pushing the limits of what’s possible through automated analysis.

Summary
Summary

Overall, the design of any successful course involves a series of tradeoffs. We’ve made these very intentionally in CS 124, and are always happy to engage with students about how the course is designed and implemented.

We also continually monitor many quantitative aspects of CS 124—including student performance, drop rates, and continuation to and performance in downstream courses. All of the design choices listed above have been associated with positive changes in these course health metrics. And we’re always trying to do better.

Course Activities
Course Activities

CS 124 consists of asynchronous daily lessons and online office hours. You’ll do some work on CS 124 every day, and a lot of work on CS 124 on a few days.

Daily lessons are designed by Geoffrey Challen, who has primary responsibility for course content and administration. You’ll also be viewing content created by Colleen Lewis, who co-taught CS 124 in Fall 2021 and added many Java walkthroughs and videos. Undergraduate and graduate course staff run online and in-person tutoring at all hours of the day and night.

Lessons
Lessons

Programming is a skill. And the best way to learn to program and to get started with computer science is to do a little bit every day.

CS 124 course content is delivered through a series of daily lessons. Each lesson introduces new material through a combination of text, video, and interactive walkthroughs. Throughout each lesson are practice problems, and at the end of each lesson are one or two homework problems to complete to demonstrate your understanding of the lesson’s content. You should set aside time each day to review both lessons and complete both homework problems.

Quizzes
Quizzes

Each 50-minute quiz emphasizes the material covered since the previous quiz, but everything covered up to that point is fair game. Quizzes contain a mixture of multiple-choice questions covering course concepts along with programming questions and debugging challenges. The programming questions will be similar—but not identical—to the previous homework problems.

Keeping up with the lessons will prepare you for each quiz. Quizzes are taken in the Illinois CBTF, and scheduled using the CBTF scheduling website. CS 124 quizzes will be given between Monday and Wednesday at the beginning of the semester, and shifting to Sunday through Tuesday midway.

Note that we will no provide overrides or retake opportunities for CS 124 CBTF quizzes. You are responsible for signing up to take them and showing up at your assigned time. Any missed quizzes will be subject to the quiz drop policy.

Tutoring Site
Tutoring Site

All course staff participate in providing individual assistance through our tutoring site. Tutoring hours will be posted on the calendar.

Communication
Communication

CS 124 is a large class. This makes it important for us to communicate with each other in effective ways.

We have set up a comprehensive and well-organized course website and 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 124:

  1. This website
  2. The course forum

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.

What You Are Responsible For
What You Are 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, particularly at the beginning of the semester.

You are responsible for messages posted in the announcements forum category. These announcements are important and we will frequently post in this category in lieu of using email. You can configure our course forum to send emails each time a topic is created in a specific category. We would suggest that you do that—or plan on visiting the forum each and every day. In fact, both are good ideas.

Contacting the Course Staff
Contacting the Course Staff

Please do not email the course staff with general course questions.

You may think that the professor spending five minutes responding to your email is not a huge problem. But five-minute responses to 500 students consumes 40 hours. Help us help everyone, and post your question on the forum.

You should absolutely never directly message a member of the course staff who is not an instructor. All staff are instructed to not respond to direct messages. If you persist in attempting to contact them, disciplinary action may result.

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 your questions are shared by other students. If you email us, we can answer your question to one person: you. (And right behind your email is another asking the same question.) If you post on the forum, we can answer your question once to the entire class. And you may find that your question has already been answered, or that another student can answer it for you.

Here is a general guide about how to contact the course staff:

You can probably see the pattern emerging here.

In contrast, here are some cases where you can and should contact the instructor:

In these cases please reach out to an instructor, either directly via email or using a private message on the course forum.

Collaboration
Collaboration

Learning computer science requires hard work and practice. CS 124 has specific policies about when and how you may collaborate with other students. These policies are designed to support your learning. If you subvert them, you are not getting the practice that you need to improve.

Unless specifically permitted, all work submitted for CS 124 must be your own. We describe exceptions that apply to homework problems and to portions of the machine project below.

Cheating in CS 124 may result in a grade reduction, your removal from the CS program, or from the University of Illinois. We have many bright, honest students that want to learn computer science. We don’t waste time and energy on cheaters that don’t want to learn.

Specifically, the following activities constitute cheating and will be dealt with according to relevant departmental and university policies. You may not:

  1. Turn in work that was completed by anyone other than yourself.
  2. Copy or paste code that you did not write from any source.
  3. Misrepresent your work as the work of another student.
  4. Examine another classmates solution, reproduce it, and submit it as your own work.
  5. Share information about the content of quizzes or other private course assessments.
  6. Publish your MP or coursework anywhere where other students can find them.
  7. Email or share your code with anyone in the class now or in future semesters.

Note that this includes publishing your MP publicly on GitHub. Employers are typically uninterested in seeing your solutions to assignments that have also been completed by hundreds of other students. If you want to impress them, fill your online portfolio with independent creative work. We’ll help you get started with Android development this semester, which will allow you to pursue independent projects after completing CS 124. You may also want to look into completing a project as part of the CS 124 honors section: CS 199 124.

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. In Fall 2022 we filed 42 FAIR violations almost all of which resulted a letter grade reduction. We are serious about this, and ask you to be serious about learning.

A Rule of Thumb
A Rule of Thumb

A general rule of thumb is that exchanging or soliciting ideas about how to solve problems 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 speaking or signing in English or another human language that’s fine. If you are exchanging computer code, that’s cheating.

Penalties
Penalties

If you are caught cheating in CS 124 you will definitely receive a FAIR violation. Depending on the severity of the situation, you may also have any of the following penalties applied:

Homework Collaboration
Homework Collaboration

You may find it helpful to collaborate on the homework with others. This is permitted in CS 124, subject to the rules outlined below.

The goal is to support each other’s learning and practice talking about the problems and computer science together. However, there are lots of ways to work together that could lead you both learning less than if you had worked independently. And please keep in mind that you will need to complete the weekly quiz on your own, and the homework problems are a critical way to prepare for the quizzes.

If you are interested in collaborating on the homework problems, you may do so freely. We encourage you to find good collaborators. A good collaborator is someone who works at a similar pace and who you feel comfortable exchanging questions with. When you complete the problem, you should both feel confident that you understand the problem you worked on together, and could tackle it on your own. Since you will need to on the next quiz!

You may examine code written by your collaborators—either in person or virtually. However, you may not electronically directly transfer or receive source code. Our homework problems prevent you from directly pasting text anyway, so this approach won’t be helpful. All collaborators must enter their own solution, and we expect to see small differences even from students who worked together.

One final thing to keep in mind is that the course staff are always available to help! You’ll find helpful course staff on our tutoring site for hours and hours each day and night. In many ways, our course staff are better prepared to collaborate with you on your homework than other students. They have completed the problems, but are not experienced enough to quickly notice every mistake. And, most importantly, they are trained to help you in ways that enable your learning, not just quickly lead to you to a solution.

MP Collaboration
MP Collaboration

You may work independently, collaborate with another CS 124 student, or utilize AI coding tools when working on the machine project.

Note that, regardless of how you choose to work on the project, your submissions will be checked for plagiarism in the same way, and you are always expected to adhere to CS 124 collaboration policies. The only exception is if you choose to work with another student. In that case, code submitted by you and your partner should be identical and submitted at similar times, since you should be completing all of your project work together, as described below.

We will provide more details about how to indicate that you are collaborating and who you are working with when the machine project is released.

Working Independently

You may choose to work independently on the machine project. The project is intended to be something that a single student can complete. For many students, they also learn the most when they work this way. Keep in mind that you have support from the course staff available whenever you need it!

Working With Another Student

If you choose to work with a human partner, you must complete all of your work on the MP together. You may not write or debug code without your partner. You also may not receive help from course staff without your partner.

This type of enforced collaboration is not common industry practice. Even developers who might choose to collaborate on trickier parts of a project would still perform most of their work independently. But our policy is designed to ensure you both have the opportunity to learn from all parts of the project. When you are working, you need to alternate who is driving—meaning using the keyboard. We recommend setting a timer to remind you when to switch drivers.

You cannot switch partners during the MP. But you and your partner can decide to end your collaboration at any point. If you decide to part ways, you and your partner can continue using the codebase that you worked on together until that point.

Utilizing AI Coding Tools

You may choose to take advantage of AI tools that support software development, such as GitHub Copilot and GPT. If you select this option, you must work independently, and not with another CS 124 student.

CS 124 does not provide explicit support or training in the use of these tools. However, you may find them helpful, both now and in the future.

A few notes if you choose this option:

  1. Your code will still be checked for plagiarism. If you submit code that is highly-similar to code submitted by another student, we will move forward with academic integrity proceedings. Claiming that your code was generated by AI will not be considered a valid excuse. You should keep in mind that AI tools sometimes generate fairly unusual solutions, and code that might be similar to code generated by others using similar prompts.

  2. Course staff will not assist you if you do not understand your own code. Do not ask AI to complete a portion of the code and then come to the tutoring site for support if you don’t understand what it generated. Debugging and understanding code generated by AI is part of the challenge of using these tools.

  3. Quizzes will cover both coding and conceptual MP content. And you will be expected to complete these questions in the testing center unaided.

If you have questions about this option, please ask on the forum.

Grading
Grading

Your grade in CS 124 is determined by your work on the daily homework (20%), weekly quizzes (50%), and longer multi-part Android programming project (30%).

There may also may be opportunities to earn extra credit during the semester. Stay tuned!

Grade Components
Grade Components

Your total score in CS 124 is broken down as follows:

Component%AssessmentsDrops
Machine Project (MP)30%~40
Homework20%~709
Quizzes50%153

These weights are designed to reflect both the amount of time that students spend on each part of the class and the differences between the proctored and unproctored environments. You will spend most of your time completing the MP and homework problems. That is where you will get the practice that turns you into a computer scientist and hacker. The quizzes give us a chance to evaluate your abilities in a controlled setting.

Details about each grade component are included below.

Drops
Drops

To account for illness, absence, forgetfulness, mistakes, temporary stupidity, and other normal life events, we will drop a few of your lowest quiz and homework scores. The table above summarizes the drop policy for each grade component.

So, for example, we will assign roughly 70 homework problems and drop your lowest 9 scores. The machine project has approximately 4 checkpoints and we not drop any checkpoint scores.

Estimating Your Letter Grade
Estimating Your Letter Grade

Letter grades in CS 124 are assigned based on how well you do, not on your performance relative to other students. We have an unlimited number of A grades! If everyone in learns the material, everyone will make an A. Our goal as course staff is to help everyone succeed.

Inevitably the difficulty of various parts of the course varies from semester to semester. We do not release the final grading scale until the end of the semester. Please do not ask us to estimate your grade.

Instead, focus on learning the material to the best of your ability. Programming in particular is a skill—the more you do, the better you get. Focus on doing as much as you need to become proficient, rather than the amount required to make a particular grade.

Posting Grades
Posting Grades

CS 124 maintains its own gradebook on the course website. We do not post grades on other websites or platforms.

Homework (20%)
Homework (20%)

Learning to program takes regular consistent practice. When you are getting started, you’ll tire quickly from this engaging right-left brain activity. So it’s better to do a bit each day than large amounts in one sitting.

Each CS 124 lesson contains a small programming problem for you to complete. Some contain debugging challenges as well. Completing the daily homework and debugging challenge will help ensure that you are well-prepared for each week’s quiz. Quiz programming problems will be similar to the ones that you completed on the homework during the previous week.

Quizzes (50%)
Quizzes (50%)

50% of your grade is for performance on 15 weekly timed quizzes. All quizzes will be given in the Illinois Computer-Based Testing Facility (CBTF) and scheduled via their scheduling tool.

CS 124 quizzes consist of a mixture of multiple-choice questions, programming questions, and debugging challenges. All questions are automatically graded. Unlike other “top” CS programs, we evaluate your programming not on paper but in a much more sane setting: using a keyboard, and with automated computer-generated feedback to help you identify and correct your mistakes. You know—the way you’ll actually write code in the real world.

No course staff are involved in grading CS 124 quizzes, so please do not appeal your grade to the course staff. If you have concerns about the questions themselves, please post on the forum after the quiz ends. We have also begun releasing the programming questions from each quiz after the quiz ends, and so you may use these to continue to practice and understand the mistakes you made during the quiz. You can check your official quiz scores using our online grading page.

Format
Format

Quiz questions are a mix of multiple-choice questions drawn from lesson content, small programming problems, and debugging challenges. Programming problems may be drawn from previous homework or appear later as homework.

Most multiple-choice questions allow unlimited attempts, albeit for a decreasing number of points. We do want you to eventually find out what the right answer is, even if you didn’t know it at first.

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 multiple-choice questions should be easy if you have 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.

Quiz Preparation
Quiz Preparation

Quizzes focus on material covered since the previous quiz, but all material covered to that point in semester is fair game. The best way to prepare for a quiz is to complete the previous lessons. Read the lesson, watch the videos and walkthroughs, and interact with the examples, attempt the practice problems—and then complete the homework problem and debugging challenges. If you engage with the course content on a daily basis, you will not need to cram material right before the quiz.

Missed Quizzes
Missed Quizzes

Do not contact the course staff regarding missed quizzes. You must take them at your assigned time and not at some other time. We will drop your 3 lowest quiz scores when computing the quiz component of your final grade.

Catch-Up Quiz Grading
Catch-Up Quiz Grading

The material in CS 124 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, what we want you to do to continue to succeed in CS 124 is 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.

Second, there are a few points in the semester when we begin new material: specifically Quiz 6 (beginning of objects) and Quiz 10 (beginning of data structures and algorithms). Because these quizzes cover different material than the preceding quiz, we do not apply catch-up quiz grading to the preceding quizzes: which would be Quiz 5 (the last quiz on imperative programming) and Quiz 9 (the last quiz on objects).

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.

Catch-up quiz grades are shown on the grading page as the original score in parentheses followed by the adjusted score. So in the example above, Quiz 3 would be shown as “80 (70)”, with 70 the original score and 80 the adjusted “catch-up” score.

Reporting Quiz Problems
Reporting Quiz Problems

If you believe that you have spotted a problem with a quiz question, please report the problem to the course staff on the forum. Do not post your questions publicly.

At that point we will do one of the following:

However, please keep in mind that your perception of the question’s correct answer may be wrong. That’s the whole idea behind having the quizzes in the first place! We will run weekly programs reviewing quiz content, although they will not be recorded.

Final Exam
Final Exam

CS 124 does not have a final exam. We will run the last quiz on the Tuesday of the final week of class, but we do not give an assessment during exam week or during our scheduled exam time.

Machine Project (MP) (30%)
Machine Project (MP) (30%)

Programming is a skill. The more you do, the better you become. The CS 124 machine project (MP) is one of the ways that you will learn the powerful skill of computer programming—today’s modern superpower.

The MP is worth 30% of your grade. Working on it will deepen your understand of the material covered in lecture, and improve your performance on the quizzes.

Not Machine Problems: A Machine Project
Not Machine Problems: A Machine Project

Many other programming courses give a series of unconnected programming assignments. In prior semesters CS 124 did this as well and referred to each as a machine problem.

However, in 2019 we replaced the multiple unconnected assignments with a single machine project: an Android application that you will complete in parts over the second half of the semester. We hope that this format will encourage you to fix up and improve the parts of the project that you completed previously, while also allowing you to complete a more substantial project.

It is rare in software development to start something from scratch, work on it for only a few weeks, and then never touch it again. Completing a single longer project will better prepare you for future programming tasks—both in industry and side projects that you may do on your own. What is more normal is to work on more interesting and larger pieces of code for months or even years—starting with something simple and then gradually adding features and complexity, just as you will do this semester. You are forced to live with your mistakes and decisions, but also end up creating something much more significant.

How to Complete the MP
How to Complete the MP

To help you conquer the large machine project, we break it down into checkpoints that will happen roughly once every two weeks once the project begins. Each checkpoint is designed to take a significant amount of time. You should arrange your schedule so that you can devote a significant amount of time on them. Do not start the night before. Not only will it be unlikely that you will complete that component of the MP, but you will also be unlikely to be able to get help when you get stuck.

Learning to program is like learning other skills—how to play an instrument, throw a tight spiral, cook the perfect omelet, or learn another human language. You have to do it every day. You can’t expect to complete a marathon or perform at Carnegie Hall if you start practicing the night before.

As soon as each checkpoint is released, sit down and spend a few hours on it. And then do that the next day, and the day after that. If you start early and work often, you will have no problem completing the checkpoint before the deadline. If it turns out to be easy for you, you’ll be done early and can relax and help other students. If it turns out to be more difficult, you’ll know early on and be able to budget your time accordingly to complete it on time. Nothing correlates more strongly with success on the MP checkpoints than starting early.

Staggered Deadline Policy
Staggered Deadline Policy

To allow us to support your work on the MP more effectively, we break the class into two teams, and stagger their deadlines by 24 hours.

The CS 124 project is completed over a series of checkpoints, each with its own deadline. However, you’ll notice that each checkpoint has two deadlines—one for the Orange (or Blue) Team, and the second one day later for the Blue (or Orange) Team. You’ll be assigned to one deadline team at random, and if you choose to collaborate, collaborators will be assigned to the same deadline team when they form a group.

Why we do this is simple: It allows the course staff to provide better support around deadlines. Despite the fact that the best way to succeed on the project is to start early and follow our schedule, some of you will still end up needing last-minute support. Splitting the class in half allows us to do a better job of supporting everyone, and has been shown to significantly reduce wait times near checkpoint deadlines.

Isn’t this unfair? After all, for each checkpoint, one team’s deadline will be earlier. This is a valid concern. Note that we will provide each team with the test suites needed to start each checkpoint as soon as they complete the previous checkpoint, to provide both teams with an equivalent amount of time between receiving the tests and the due date.

This is also not the first time that we have used the split deadline model. In the past, performance of both teams was indistinguishable, indicating that neither had an advantage. We will review the performance on the MP of both teams again at the end of this semester and correct any large disparities if needed.

At the end of the day, staggered deadlines help everyone do better on the project by flattening load spikes on the tutoring site, tutoring center, and forum. As always, the goal of the entire staff is for everyone to succeed at the project. This helps us support you in that shared goal.

Late Submission Policy
Late Submission Policy

It is extremely important that you keep up with the MP. CS 124 moves quickly, and if you get behind early you will quickly find yourself lost and unable to complete the later assignments.

As a result, the late submission policy is designed to reward students that do a fair amount of work before the deadline. Here are the details of the policy:

Extra Credit
Extra Credit

There may be opportunities to earn extra credit this semester. Note that we do not give extra credit for things that we think that you absolutely should be doing to succeed in the class. We might provide extra credit for providing some data that helps improve the class, or bearing with us while we try something experimental and new, or for helping other students.

We’ll definitely let you know about any extra credit opportunities as they arise.

Accommodations
Accommodations

We are more than happy to make arrangements to help accommodate students with disabilities. Please assist us by informing us of your situation as soon as possible. The earlier in the semester you can let us know what kind of help you need, the better prepared we can be to provide it effectively.

Please upload your Letter of Accommodation using this form, to ensure we have it on file. Note that to access this form, you will first need to visit the Illinois Cloud Dashboard and enable Google Apps Integration. To receive testing accommodations on weekly quizzes, you will also need to provide your letter to the CBTF, using their form.

Note that in many cases your letter of accommodation will require that you request accommodations before or on the relevant deadlines. If you fail to do so, we will not consider late requests. Part of our job in ensuring that you succeed in CS 124 is keeping you on track throughout the semester. By the time the end of the semester rolls around, it is far too late to begin asking for deadline extensions and completing missed assignments.

Other Policies
Other Policies

Below we summarize some other general course-related policies.

Extensions
Extensions

CS 124 is a fast-moving and demanding course. You signed up to learn computer science and programming for 15 weeks, and we do our best to give you your money’s worth.

One of the consequences of this is that it is hard to catch up if you have a significant illness or other problem mid-semester. We will give extensions on the MP and other assignments to accommodate unforeseen short-term circumstances. But if you are struggling with a larger issue, you should consider withdrawing and enrolling again next semester.

To receive an extension you should approach the course staff before the relevant deadline. Except in exceptional cases—hospitalization, verifiable kidnapping by aliens—we will not grant requests for extensions or other accommodations after the relevant deadline has passed.

Diversity Statement
Diversity Statement

We want our course to be welcoming and inclusive.

If there is anything that we can do to make you more comfortable in CS 124, please let us know. Here’s the official Illinois text that has helpful info:

The University of Illinois is committed to equal opportunity for all persons, regardless of race, ethnicity, religion, sex, gender identity or expression, creed, age, ancestry, national origin, handicap, sexual orientation, political affiliation, marital status, developmental disability, or arrest or conviction record. 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. We will continue to create an inclusive campus culture where different perspectives are respected and individuals feel valued.

Mental Health Statement
Mental Health Statement

Mental health is both important and an important challenge in computer science.

We will discuss how to stay sane in computer science at various points throughout the semester. But overall, if there is anything that we can do to support your mental health during the semester, please let us know. Here’s the official Illinois text that has helpful info:

Diminished mental health, including significant stress, mood changes, excessive worry, substance or alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional wellbeing. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do—for yourself and for those who care about you.

Classroom Climate
Classroom Climate

Our course goals can only be accomplished in a setting of mutual respect.

Our staff are committed to creating a classroom environment that welcomes all students, regardless of their identities—race, class, gender, sexual orientation, religious beliefs. We all have unconscious biases, and we will try to continually examine our judgments, words and actions to keep our biases in check and treat everyone fairly. We hope you will do the same. If you feel comfortable, please let us know if there is anything we can do to make sure everyone is encouraged to succeed in this class.

Here’s the official Illinois text that has helpful info:

The intent is to raise student and instructor awareness of the ongoing threat of bias and racism and of the need to take personal responsibility in creating an inclusive learning environment. The Grainger College of Engineering is committed to the creation of an anti-racist, inclusive community that welcomes diversity along a number of dimensions, including, but not limited to, race, ethnicity and national origins, gender and gender identity, sexuality, disability status, class, age, or religious beliefs. The College recognizes that we are learning together in the midst of the Black Lives Matter movement, that Black, Hispanic, and Indigenous voices and contributions have largely either been excluded from, or not recognized in, science and engineering, and that both overt racism and micro-aggressions threaten the well-being of our students and our university community. 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 racism, discrimination, micro-aggressions, or other offensive behavior, you are encouraged to bring this to the attention of the course director if you feel comfortable. You can also report these behaviors to the Bias Assessment and Response Team (BART). Based on your report, BART members will follow up and reach out to students to make sure they have the support they need to be healthy and safe. If the reported behavior also violates university policy, staff in the Office for Student Conflict Resolution may respond as well and will take appropriate action.

Wellbeing and Distress
Wellbeing and Distress

We care about you first and foremost as a human—not as a student.

Your wellbeing should be your top priority and much more important than this class. We consider wellbeing as being able to continually meet your needs for sleep, food, exercise, socializing, relaxing, and emotional support. We want to destigmatize distress, but not normalize distress. It is unfortunately common to experience distress in school and I want you to know that you’re not alone if you’re experiencing some form of distress. When this happens, reaching out is essential! If we normalize this distress, we might incorrectly assume that we shouldn’t reach out.

Here’s the official Illinois text that has helpful info:

As members of the Illinois community, we each have a responsibility to express care and concern for one another. If you come across a classmate whose behavior concerns you, whether in regards to their well-being or yours, we encourage you to refer this behavior to the Student Assistance Center (1-217-333-0050) or online. Based upon your report, staff in the Student Assistance Center reaches out to students to make sure they have the support they need to be healthy and safe. Further, as a Community of Care, we want to support you in your overall wellness. We know that students sometimes face challenges that can impact academic performance (examples include mental health concerns, food insecurity, homelessness, personal emergencies). Should you find that you are managing such a challenge and that it is interfering with your coursework, you are encouraged to contact the Student Assistance Center (SAC) in the Office of the Dean of Students for support and referrals to campus and/or community resources. The SAC has a Dean on Duty available to see students who walk in, call, or email the office during business hours. For mental health emergencies, you can call 911 or contact the Counseling Center.

Diminished mental health, including significant stress, mood changes, excessive worry, substance/alcohol abuse, or problems with eating and/or sleeping can interfere with optimal academic performance, social development, and emotional wellbeing. The University of Illinois offers a variety of confidential services including individual and group counseling, crisis intervention, psychiatric services, and specialized screenings at no additional cost. If you or someone you know experiences any of the above mental health concerns, it is strongly encouraged to contact or visit any of the University’s resources provided below. Getting help is a smart and courageous thing to do—for yourself and for those who care about you.

Confidential Resources
Confidential Resources

If we learn about a situation in which a student is in danger of harming themselves or others, or has been seriously harmed, I may be legally required to notify the Title IX Coordinator.

If students want to speak with someone confidentially, these resources are available on and off campus. Speaking with a confidential resource does not preclude students from making a formal report to the Title IX Coordinator. Confidential resources can walk students through all of their reporting options. They can also provide students with information and assistance in accessing academic, medical, and other support services they may need.

Here’s the official Illinois text that has helpful info:

The University of Illinois is committed to combating sexual misconduct. Faculty and staff members are required to report any instances of sexual misconduct to the University’s Title IX and Disability Office. In turn, an individual with the Title IX and Disability Office will provide information about rights and options, including accommodations, support services, the campus disciplinary process, and law enforcement options. A list of the designated University employees who, as counselors, confidential advisors, and medical professionals, do not have this reporting responsibility and can maintain confidentiality, can be found here. Other information about resources and reporting is available here.

Religious Observances
Religious Observances

For people of many religions, school conflicts with their religious holidays.

Even when religious holidays don’t fall on a class day, you might typically take time off from work to celebrate.

The CS 124 drop policy is how we accommodate religious observations that affect your ability to complete the homework. If you need to take a quiz early or a day late, or need an extension on the machine project, please let us know. We can work together to make a plan that works for you.

Here’s the official Illinois text that has helpful info:

Illinois law requires the University to reasonably accommodate its students’ religious beliefs, observances, and practices in regard to admissions, class attendance, and the scheduling of examinations and work requirements. You should examine this syllabus at the beginning of the semester for potential conflicts between course deadlines and any of your religious observances. If a conflict exists, you should notify your instructor of the conflict and follow the procedure outlined here to request appropriate accommodations. This should be done in the first two weeks of classes.