Warning: Outdated Content
This syllabus is from a previous version of CS 125. Click here to access the latest version.
CS 125 Fall 2017 Syllabus
1. 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.
Computer science is both an applied and a conceptual discipline. You will learn how to program in this course. Learning how to program effectively helps you bring your ideas to life. It can be frustrating at first—computers are irritatingly literal machines. But programming is a skill, and like any other skill you will get better with 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—just not everything.
But while programming is both important and enjoyable, computer science also has deep conceptual concerns at its core. As a computer scientist, you’ll learn to design solutions to problems so that computers can carry them out efficiently—we call these algorithms. Being a computer scientist means coming up with new ways to solve problems more effectively. And then you get to build your solutions and can easily deploy them to billions of people all over the world. No other field has our potent mixture of left-brain analytics, right-brain design and creativity, and the potential for global impact.
1.1. Catalog Description and Prerequisites
From the official catalog description:
-
Description: Basic concepts in computing and fundamental techniques for solving computational problems. Intended as a first course for computer science majors and others with a deep interest in computing.
-
Prerequisites: Three years of high school mathematics or Math 112.
1.2. Learning Objectives
CS 125 works on both conceptual and skill-based levels. We teach you how to think, and we teach you how to do.
1.2.1. Conceptual Objectives
When you finish this course, you will be able to:
Outcome | Assessment |
---|---|
Explain how computers work—including components of a small instruction set and byte-addressable memory |
Class and lab participation, quizzes, final exam. 70% correctly identified marks outcome achieved. |
Describe how computers represent, structure, and manipulate data—including numbers, strings, and multimedia data including images and audio |
|
Develop algorithms to effectively solve problems using computers—including both iterative and recursive algorithms—and reason about their computational and storage requirements |
|
Explain the importance of core Java software development concepts—including object orientation, object types, encapsulation, and inheritance |
1.2.2. Programming Objectives
When you finish this course, you will be able to:
Outcome | Assessment |
---|---|
Design and implement small and medium-sized Java programs that perform straightforward operations on simple data types, using recursion when appropriate. |
Machine problems, lab programming projects, office hours attendance. 70% correctly identified marks outcome achieved. |
Learn to use modern Java software development tools—including an integrated development and debugging environment (Eclipse), source version control (Subversion), testing framework (TestNG), coding convention tool (checkstyle), build system (Gradle), and pair programming techniques. |
|
Utilize standard Java features and libraries—including objects and simple built-in data structures. |
|
Debug and test Java programs |
1.3. Prerequisites
CS 125 has no prerequisites and assumes no prior knowledge of programming or computer science. However, the course is a lot of work---and so is best suited to those who are either majoring in computer science or have a strong interest in the subject.
Some students in CS 125 have no experience with computer science. Others have been programming for years. We will do our best to accommodate both groups.
1.3.1. 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.
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 and 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 arrogance or bragging. But 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.
1.3.2. If you think you 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, 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 MPs 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 Illinois Chapter of the Association for Computing Machinery (ACM), 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.
1.4. General Education Information
CS 125 meets the University of Illinois General Education Requirements in the Quantitative Reasoning 1 category.
2. Communication
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 1 and modern forum to help you find our what you need to know. Our goal is to avoid email as much as possible, along with other 1-to-1 forms of communication that don’t scale well to large numbers of students.
2.1. Where to Find Information About CS 125
There are two primary sources of information for CS 125:
-
This website
-
The forum
2.2. What You Are Responsible For
As a student at the University of Illinois you are responsible for email sent
to your @illinois.edu
email address.
We will occasionally use a course email list to send important announcements.
So messages in your inbox might say things like: "There’s a quiz tomorrow" or
"There’s a fire alarm in Siebel and class is canceled."
We all get too much email, but learning to manage it is a fact of modern life.
Feel free to talk to the course staff if you want tips.
As a student in CS 125 you are responsible for messages posted in the announcements category of the forum. 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.
2.3. How to Contact the Course Staff
Please do not email the course staff with general course questions. You should also never contact a TA or doyen directly unless they have agreed to this beforehand. Post on the forum.
This is not because we don’t like you or don’t like email. 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:
-
I need help installing (insert name of software here)…: post on the forum.
-
I’m confused about (insert name of concept here)…: post on the forum.
-
I need help with (insert any CS 125-related item here)…: post on the forum.
-
I can’t find (insert name of CS 125-related resource here)…: post on the forum.
Can you see a pattern emerging here?
In contrast, here are some cases where you can and should contact the course instructors:
-
I think that my friend is cheating in CS 125: 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.
3. Machine Problems (MPs)
Programming is a skill. Like other skills, the more you do it, the better at it you become. The CS 125 machine problems (MPs) 2 are the primary way that you will learn the powerful skill of computer programming—today’s modern superpower.
Together the MPs are worth only 15% of your grade. But working on them will deepen your understand of the material covered in lecture, and improve your performance on the quizzes and final exam.
3.1. How to Complete the MPs
The CS 125 MPs are designed to take a significant amount of time. So 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 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 MP 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 MP 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 according to complete it on time. Nothing correlates more strongly with success on the MPs than starting early.
3.2. MP Regrade Policy
This semester we will use two different MP regrading policies—one for MPs 1–3, the second for MPs 4 and onward.
3.2.1. MP1–MP3
-
You can commit MP1–MP3 as many times as you want until Friday, December 8th, 2017.
-
You will lose 1 percentage point (usually out of 100) for each week that your submission is late relative to the original deadline. So if the deadline was Friday at 5PM and you commit on that same Friday at 6PM, you lose 1 point. If you submit the next Friday at 6PM, you lose two points.
-
Late submissions will not recover any starting the assignment on time points.
-
You will always receive the best score earned by any submission.
3.2.2. MP4 onward
-
You can commit MP4 and later MPs as many times as you want until Friday, December 8th, 2017.
-
Late submissions can earn back 50% of any points lost by your best on-time submission. So if you submit code that earns 80/100 before the deadline, you will receive a 90/100 if you submit a perfect MP after the deadline. If you submit code that earns 0/100 before the deadline, the best you can do is a 50/100 with a perfect submission anytime after the deadline.
-
Late submissions will not recover any starting the assignment on time points. So if there were 10 starting the assignment on time points that you did not earn, and your best score before the deadline was a 60/100, the best you can do is a 75/100: half of the 30 points you missed that were not for starting the assignment on time.
-
You will always receive the best score earned by any submission.
4. Quizzes
Weekly quizzes are the largest component of your CS 125 grade. Most are given in the University of Illinois Computer-Based Testing Facility (CBTF). Some may also be given during your lab section.
CBTF quizzes consist of questions that are automatically generated and graded. No course staff members are involved in grading almost all CS 125 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.
4.1. Scheduling
The CBTF is located in the basement of Grainger Library. You can use this link to sign up to take each quiz. Using the CBTF allows us to provide you with flexibility in scheduling your weekly quizzes. You can take each quiz over a range of dates and times, usually Friday through Tuesday.
4.2. Preparation
Quizzes focus on material covered that week, but all material covered that semester is fair game. The best way to prepare for a quiz is to participate in class that week. Attend lectures and participate, attend labs and participate, work on the assigned MP (if any), and ask and answer questions on the forum. If you engage with the course content on a daily basis, you will not need to cram material right before you take the quiz.
4.3. Missed Quizzes
Because you have a several day window to complete each quiz, we expect that you will be able to work around most other commitments and even short illnesses. As a result, if you miss a quiz you will be subject to the following penalties:
-
1st missed quiz: you will receive 80% of the average on the rest of your quizzes
-
2nd missed quiz: you will receive 70% of the average on the rest of your quizzes
-
3rd missed quiz: you will receive 50% of the average on the rest of your quizzes
5. Grading
Your grade in CS 125 is determined by your performance on weekly quizzes, your completion of the course machine problems (MPs), a written final exam, completion of Turing’s Craft exercises, and lecture and lab participation points.
5.1. Grade Components
Your total score in CS 125 is broken down as follows:
Component | Percentage (%) |
---|---|
Weekly Quizzes |
45% |
Final Exam |
25% |
Machine Problems (MPs) |
15% |
Turing’s Craft Exercises |
5% |
Lab Participation Points |
5% |
Lecture Participation Points |
5% |
5.2. Estimating Your Letter Grade
Letter grades in CS 125 are assigned based on how well you do, not based on your performance relative to other students. We have an unlimited number of A grades that we can hand out. If everyone in the learns all of the material to our satisfaction, everyone in the class will make an A.
Inevitably the difficulty of various parts of the course varies from semester to semester. So we do not determine the final grading scale until we examine all scores at the end of the semester. During the semester, do not ask us to estimate your grade or tell you how well you need to do on an assignment to make a certain grade. The fact that the final exam is worth 25% of your grade also makes it pointless to try to project your final grade midway through the course.
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 at it. So you should focus on doing as much as you need to get good at it, rather than the minimum necessary to make a particular grade.
However, the following table can be used to provide you with a rough approximation of the letter grade that you will receive:
If you earn at least…# | you will probably get at least an… |
---|---|
65% |
C- |
80% |
B- |
90% |
A- |
5.3. Posting Letter Grades
We do not continuously maintain course grades on Compass. We will post final letter grades there at the end of the term.
6. People
CS 125 has a large and motivated course staff. We look forward to helping you learn computer science!
6.1. Instructors
Bill Chapman
Teaching lectures
Geoffrey Challen
Teaching lectures and section AYA
Lawrence Angrave
Teaching lectures
6.2. Teaching Assistants
Amod Agrawal
Teaching sections AYI and AYS
Anqi Mao
Teaching sections AYE and AYU
Bingjie Jiang
Teaching sections AYJ and AYK
Chinny Emeka
Teaching sections AYH and AYM
Fatima Tariq
Teaching sections AYB and AYL
Liia Butler
Teaching sections AYF and AYR
Manav Kedia
Teaching sections AYD and AYN
Mihika Dave
Teaching sections AYC and AYQ
Rishika Agarwal
Teaching sections AYT and AYV
Zhe Xu
Teaching sections AYG and AYP
6.3. Illinoisan Doyens
Assisting with section AYJ
Assisting with section AYJ
Assisting with section AYM
Assisting with section AYV
Assisting with section AYG
Assisting with section AYT
Assisting with section AYQ
Assisting with section AYD
Assisting with section AYH
Assisting with section AYK
Assisting with section AYI
Assisting with section AYA
Assisting with section AYF
Assisting with section AYB
Assisting with section AYT
Assisting with section AYE
Assisting with section AYE
Assisting with section AYU
Assisting with section AYI
Assisting with section AYM
Assisting with section AYN
Assisting with section AYR
Assisting with section AYC
Assisting with section AYB
Assisting with section AYN
Assisting with section AYA
Assisting with section AYP
Assisting with section AYU
Assisting with section AYD
Assisting with section AYT
Assisting with section AYV
Assisting with section AYM
Assisting with section AYF
Assisting with section AYC
Assisting with section AYQ
Assisting with section AYE
Assisting with section AYK
Assisting with section AYA
Assisting with section AYV
Assisting with section AYQ
Assisting with section AYS
Assisting with section AYB
Assisting with section AYH
Assisting with section AYH
Assisting with sections AYG and AYS
Assisting with section AYF
Assisting with section AYL
Assisting with section AYP
Assisting with section AYG
Assisting with section AYP
Assisting with section AYC
Assisting with section AYJ
Assisting with section AYL
Assisting with section AYR
Assisting with section AYD
Assisting with section AYR
Assisting with section AYI
Assisting with section AYL
Assisting with section AYN
Assisting with section AYS
Assisting with section AYF
Assisting with section AYU