This web page serves as the syllabus for the course. You should familiarize yourself with these policies and refer to them when necessary.
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.
Computer science is both an applied and a conceptual discipline. You will learn how to program in this course. Knowing how to program brings your 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! 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 hackers lament. Once you can program well, you can do anything—but you still can't do everything.
But 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. 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.
From the course catalog:
There is no required textbook for CS 125. Everything you need will be available online on this website.
CS 125 works on both conceptual and skill-based levels. We teach you how to think, and we teach you how to do.
When you finish this course, you will be able to:
|Develop algorithms to effectively solve problems using computers—including both iterative and recursive algorithms—and reason about their computational and storage requirements.||Class and lab participation, quizzes, and midterms.|
|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 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.|
When you finish this course, you will be able to:
|Design and implement small and medium-sized Java programs that perform straightforward operations on simple data types, using iterative, object-oriented, and recursive approaches as appropriate.||Machine problems, lab programming projects, office hours attendance.|
|Learn to use modern Java software development tools—including an integrated development and debugging environment (Android Studio), source version control (Git), testing framework (TestNG), coding convention tool (||70% correctly identified marks outcome achieved.|
|Utilize standard Java features and libraries—including objects and simple built-in data structures.|
|Debug and test Java programs.|
|Use programming to solve problems in other domains.|
CS 125 assumes no prior knowledge of computer science or programming experience. The course is a lot of work—and so is best suited to those with a strong interest in the subject.
Some students in CS 125 have no experience with computer science. Others have been programming for years. We accommodate both groups.
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 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 125 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.
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, new problems to solve. Even if you don't find every aspect of CS 125 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 (CS 196), get involved with the [ACM](https://acm.illinois.edu/[Illinois Chapter of the Association for Computing) 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.
Maybe you should sign up for the CS 125 Proficiency Exam and bypass CS 125 entirely? You may not get much out of the class.
CS 125 meets the University of Illinois General Education Requirements in the Quantitative Reasoning 1 category.
Here are answers to some commonly-asked questions about CS 125.
No, sorry. I have absolutely no control over registration. You'll need to talk to an academic adviser.
CS 125 consists of asynchronous daily interactive lessons, regularly-scheduled course programming, and online office hours. You should expect to do some work on CS 125 every day, and a lot of work on CS 125 on some days.
Daily lessons are designed by Geoffrey Challen, who also has primary responsibility for course content. Course programming is delivered by teaching assistants and course associates. All course staff help run office hours at all hours of the day and night. You can find all our fantastic staff listed here.
We suggest that you add our course calendar to your calendaring program. All course programming, deadlines, and other activities will be posted on this calendar.
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 125 course content is delivered through a series of daily lessons. Each lesson introduces new material through a combination of text, video, and interactive walkthroughs. At the end of each lesson are a few homework problems to complete that demonstrate your understanding of the lesson's content. You should set aside time each day to review the lesson content and complete the homework problems.
Keeping up with the daily lessons will prepare you for the weekly quiz. Quizzes are run during lab time on Tuesday and proctored by your lab TA.
Each one-hour quiz covers the material covered in the previous week. Quizzes contain a mixture of multiple-choice questions covering course concepts along with programming questions. The programming questions will be similar but not identical to the previous week's homework.
CS 125 staff run office hours at various points throughout each day as posted on the course calendar. These are a great chance to ask about new and old homework problems, conceptual content, quiz preparation, and help with the longer machine project that you will complete this semester. However, if you need to show your code to someone to get help, please use the help site.
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 will be posted on the calendar.
We encourage you to join one of the on-demand study groups. These will allow you to meet other students and to help each other in groups. But individual rooms will also be available for students who need or feel more comfortable receiving help that way.
CS 125 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 125:
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.
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 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 Discourse 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.
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 1000 students consumes 80 hours. You should also never contact a TA or CA directly unless they have agreed to this beforehand. Post on the 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 forum, we can answer your question 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 course instructors:
In these cases please reach out to one of the instructors, either directly via email or using a private message on the course forum.
Your grade in CS 125 is determined by your work on the machine project (30%), final project (10%), homework (30%), and quizzes and midterms (30%).
There are also multiple opportunities to earn extra credit throughout the semester.
Your total score in CS 125 is broken down as follows:
|Machine Project (MP)||30%||3||0|
|Quizzes and Midterms||30%||14||3 quizzes, 0 midterms|
These weights are designed to reflect the amount of time that students spend on each part of the class. 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 and midterms give us a chance to evaluate your abilities in a controlled setting.
Details about each grade component are included below.
To account for illness, absence, forgetfulness, mistakes, temporary stupidity, and other normal life events, we will drop a few of your lowest scores for all course components except the midterms. The table above summarizes the drop policy for each grade component.
So, for example, we will assign roughly 78 homework problems and drop your lowest 12 scores. The machine project has approximately 3 checkpoints and we not drop any checkpoint scores.
Letter grades in CS 125 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.
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. So 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.
CS 125 maintains its own gradebook on the course website. We do not post grades on other LMS platforms.
Learning to program takes regular consistent practice. When you are getting started you'll tired 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 125 lesson closes with a small programming problem for you to complete. Completing the daily homework will also 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.
30% of your grade is for performance on weekly timed assessments: 11 quizzes and 3 midterms. All quizzes and midterms will be given online during your assigned Tuesday lab time.
CS 125 quizzes and midterms comprise a mixture of multiple-choice and programming questions. All questions are automatically graded. All those other schools that some of you wanted to get in to---Stanford, Berkeley, MIT? They are still giving programming exams on paper and grading them by hand. Here at Illinois we evaluate your programming in a much more sane setting: using a keyboard, and with automated computer-generated feedback to help you identify and correct your mistakes.
No course staff members are involved in grading CS 125 exams, so please do not appeal your grade to the course staff. If you have concerns about the questions themselves, please post on the forum You can check your official quiz and midterm scores using our online grading portal.
Quiz questions are a mix of multiple-choice questions drawn from lesson content and small programming problems. Programming problems may be drawn from previous homework or appear later as homework.
You only get one or two attempts at the multiple choice questions. But you will have unlimited attempts at the programming problems 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 more of a challenge. 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 tasks that you should be able to complete as the semester goes on without needing to look up things online or ask for help.
Quizzes focus on material covered that week, 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 weeks lessons. Read the lesson, watch the videos and walkthrough, and interact with the examples—and then complete the homework problem. If you engage with the course content on a daily basis, you will not need to cram material right before the quiz.
Do not contact the course staff regarding missed quizzes. You must take them within your assigned lab window, and not at some other time. We will drop your 3 lowest quiz scores when computing the quiz component of your final grade.
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. We will set up a group for you to message with your concerns.
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 several weekly programs reviewing quiz content, although they will not be recorded.
Three midterms are evenly-spaced throughout the semester. The midterms are identical to quizzes in terms of scheduling and presentation. However, you cannot drop any midterm scores.
In comparison to the weekly quizzes, the midterms will be more comprehensive. Anything covered up to that point in the semester is fair game, with particular emphasis on material covered since the last midterm. Finally, you should expect about half or more of the points on each midterm to for programming problems. This may be more than on a quiz.
Midterm dates are on the course calendar. If you miss one, you will receive a zero.
Preparing for the midterms is similar to quiz preparation. Review the lesson materials, practice the homework, and ensure that you are comfortable with the MP content.
CS 125 does not have a final exam. We will run the last midterm during on the Tuesday of the final week of class, but we do not give an assessment during exam week.
Programming is a skill. The more you do, the better you become. The CS 125 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 and midterms.
Many other programming courses give a series of unconnected programming assignments. In prior semesters CS 125 did this as well and referred to each as a machine problem.
However, last year we replaced the multiple unconnected assignments with a single machine project: an Android application that you will complete in parts over the course of most of the semester. Don't worry—if you don't finish one part, we have ways to grade your future work independently of that incomplete component. But we do hope that this format will encourage you to fix up and improve the parts of the project that you completed previously.
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.
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 perfect spiral, cook the perfect omelete, 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.
It is extremely important that you keep up with the MP. CS 125 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:
The last few weeks of the course we will set you loose on a final project of your choosing. Our goal is that the machine project prepares you well to work on a final project. But the final project removes both the scaffolding of the machine project and many of the rules. You can build whatever you want, work in small teams, and are encouraged to freely and appropriately use available open source libraries.
We will hold an (optional) final project fair on reading day for you to show off your cool new Android apps. Grading for the final project is quite generous, but we do expect you to try something and take advantage of an early opportunity to do an open-ended project. We'll discuss the final project more later in the semester.
There will 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 post extra credit opportunities once the semester gets started.
Below we summarize some other general course-related policies.
Learning computer science requires hard work and practice. If you submit code that is not your own work, or take other steps to subvert the course policies, you are not getting the practice that you need to improve.
All work submitted for CS 125 must be your own. Cheating in CS 125 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 need to waste time and energy on cheaters that don't want to learn.
Note that this includes publishing your MP publicly on GitHub. Nobody wants to see your solutions to the MP anyway. If you want to impress employers, fill your GitHub page with your own independent projects.
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 2019 we filed 26 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 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.
If you are caught cheating in CS 125 you will definitely receive a FAIR violation. Depending on the severity of the situation, you may also have any of the following penalties applied:
CS 125 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.
We are more than happy to make arrangements to help accommodate students with learning disabilities or other challenges. Please assist us by informing us of your situation as soon as possible. We will be much more accommodating of requests received before the relevant assessment or deadlines, rather than after. 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 use this form to ensure that we have your Letter of Accommodation on file.
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 125 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.
We want our course to be welcoming and inclusive.
If there is anything that we can do to make you more comfortable in CS 125, please let us know. Pro forma text follows.
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 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.
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.