CS 125 Fall 2017 Syllabus

This web page serves as the syllabus for the course.

You should familiarize yourself with these policies and refer to them when necessary.

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

  • 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:

  1. This website

  2. The forum

If you have a question about the class, first look on the main course website—the one that you are currently browsing. Then, 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.

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

Photo of Bill Chapman

Bill Chapman

Teaching lectures

Photo of Geoffrey Challen

Geoffrey Challen

Teaching lectures and section AYA

Photo of Lawrence Angrave

Lawrence Angrave

Teaching lectures

6.2. Teaching Assistants

Photo of Amod Agrawal
Amod Agrawal

Teaching sections AYI and AYS

Photo of Anqi Mao
Anqi Mao

Teaching sections AYE and AYU

Photo of Bingjie Jiang
Bingjie Jiang

Teaching sections AYJ and AYK

Photo of Chinny Emeka
Chinny Emeka

Teaching sections AYH and AYM

Photo of Fatima Tariq
Fatima Tariq

Teaching sections AYB and AYL

Photo of Liia Butler
Liia Butler

Teaching sections AYF and AYR

Photo of Manav Kedia
Manav Kedia

Teaching sections AYD and AYN

Photo of Mihika Dave
Mihika Dave

Teaching sections AYC and AYQ

Photo of Rishika Agarwal
Rishika Agarwal

Teaching sections AYT and AYV

Photo of Zhe Xu
Zhe Xu

Teaching sections AYG and AYP

6.3. Illinoisan Doyens

Photo of Aaron Lichtman
Aaron Lichtman

Assisting with section AYJ

Photo of Akriti Jain
Akriti Jain

Assisting with section AYJ

Photo of Alayna Johnson
Alayna Johnson

Assisting with section AYM

Photo of Aldo Montagner
Aldo Montagner

Assisting with section AYV

Photo of Andrew Zhang
Andrew Zhang

Assisting with section AYG

Photo of Ankit Datta
Ankit Datta

Assisting with section AYT

Photo of Brian Loh
Brian Loh

Assisting with section AYQ

Photo of Bryant Zhao
Bryant Zhao

Assisting with section AYD

Photo of Byron Yan
Byron Yan
Photo of Carson Zhang
Carson Zhang

Assisting with section AYH

Photo of Chris Wong
Chris Wong

Assisting with section AYK

Photo of Colin Guo
Colin Guo

Assisting with section AYI

Photo of Connor Reardon
Connor Reardon

Assisting with section AYA

Photo of Daniel Carani
Daniel Carani

Assisting with section AYF

Photo of Darren Lim
Darren Lim

Assisting with section AYB

Photo of Devanshi Pratap
Devanshi Pratap

Assisting with section AYT

Photo of Di Ye
Di Ye

Assisting with section AYE

Photo of Dylan Chen
Dylan Chen

Assisting with section AYE

Photo of Emilio Rivera
Emilio Rivera
Photo of Eric Zhao
Eric Zhao

Assisting with section AYU

Photo of Haresh Kansara
Haresh Kansara

Assisting with section AYI

Photo of Hetian Huo
Hetian Huo

Assisting with section AYM

Photo of Isabell Lin
Isabell Lin

Assisting with section AYN

Photo of Jacob Richeal
Jacob Richeal

Assisting with section AYR

Photo of Jason Situ
Jason Situ
Photo of Jeremy Hu
Jeremy Hu

Assisting with section AYC

Photo of Jerry Li
Jerry Li

Assisting with section AYB

Photo of Jiaxuan Guo
Jiaxuan Guo
Photo of Jinlin Xu
Jinlin Xu
Photo of Jonathan Hoelzel
Jonathan Hoelzel

Assisting with section AYN

Photo of Justin Isla
Justin Isla

Assisting with section AYA

Photo of Kaleb Burklow
Kaleb Burklow

Assisting with section AYP

Photo of Kelsey Finnamore
Kelsey Finnamore

Assisting with section AYU

Photo of Kevin White
Kevin White

Assisting with section AYD

Photo of Kristen Viola
Kristen Viola

Assisting with section AYT

Photo of Kyle Begovich
Kyle Begovich

Assisting with section AYV

Photo of Larry Poon
Larry Poon
Photo of Lingrui Luo
Lingrui Luo

Assisting with section AYM

Photo of Lingzhi Chu
Lingzhi Chu

Assisting with section AYF

Photo of Max Qian
Max Qian

Assisting with section AYC

Photo of Megan Wilkinson
Megan Wilkinson

Assisting with section AYQ

Photo of Michael Tran
Michael Tran

Assisting with section AYE

Photo of Michael Yang
Michael Yang

Assisting with section AYK

Photo of Michael Zhang
Michael Zhang

Assisting with section AYA

Photo of Michelle Brown
Michelle Brown

Assisting with section AYV

Photo of Osmar Coronel
Osmar Coronel
Photo of Peiliang Han
Peiliang Han

Assisting with section AYQ

Photo of Prithvi Ramanathan
Prithvi Ramanathan
Photo of Ruixin Zou
Ruixin Zou

Assisting with section AYS

Photo of RuthAnn Haefli
RuthAnn Haefli

Assisting with section AYB

Photo of Saym Imtiaz
Saym Imtiaz

Assisting with section AYH

Photo of Sean Lin
Sean Lin

Assisting with section AYH

Photo of Shane Redman
Shane Redman

Assisting with sections AYG and AYS

Photo of Tanner Corum
Tanner Corum

Assisting with section AYF

Photo of Tao Zhou
Tao Zhou

Assisting with section AYL

Photo of Tom Tatro
Tom Tatro

Assisting with section AYP

Photo of Vibha Pandurangi
Vibha Pandurangi

Assisting with section AYG

Photo of Vincent Yang
Vincent Yang

Assisting with section AYP

Photo of Vivek Sriramineni
Vivek Sriramineni

Assisting with section AYC

Photo of Vivian Hu
Vivian Hu

Assisting with section AYJ

Photo of Vyom Thakkar
Vyom Thakkar

Assisting with section AYL

Photo of Weili Wu
Weili Wu

Assisting with section AYR

Photo of Will Koster
Will Koster
Photo of Xiangyun Cao
Xiangyun Cao

Assisting with section AYD

Photo of Xiaomin Li
Xiaomin Li

Assisting with section AYR

Photo of Yash Miriyala
Yash Miriyala

Assisting with section AYI

Photo of Yichi Zhang
Yichi Zhang

Assisting with section AYL

Photo of Yijia Qian
Yijia Qian

Assisting with section AYN

Photo of Yingzhe Yang
Yingzhe Yang

Assisting with section AYS

Photo of Yuyang Liu
Yuyang Liu

Assisting with section AYF

Photo of Zaaim Patel
Zaaim Patel

Assisting with section AYU


Created 7/14/2020
Updated 7/14/2020
Commit 2091ea3 // History // View
Built 7/14/2020 @ 16:43 EDT