You're not currently signed in. Sign in »

CS 101—Introduction to Computing for Engineering and Science


What When and Where
Lectures Mon/Wed 13h00–13h50; Foellinger Auditorium
Labs Per-section, see below; L416 Digital Computer Laboratory
Class URL
Enrollment Course catalog
Instructor email; please include in subject "CS101"
Class forum Piazza
Major academic dates January 30—add deadline; March 10—drop deadline
Python Run online » Install (3.5) » Practice »
MATLAB Run online » Install MATLAB » Install Octave » Practice »
Frequently Asked Questions


Lecture Date Preparation Supporting Resources Music Quiz

Computational Thinking

Lecture #0: Computational Thinking 2017-01-18 Ceruzzi, Computing: A Concise History quiz00
Lecture #1: Process and Data 2017-01-23 HPL 1.1.1–1.1.9, 1.2 quiz01
Lecture #2: Types and Operators 2017-01-25 HPL 1.3, 1.5–1.6 quiz02
Lecture #3: Functions and Scope 2017-01-30 HPL 1.4, 1.8, 3.1.1–2,4 i>clicker instructions quiz03
Lecture #4: Control and Logic 2017-02-01 HPL 3.2 quiz04
exam1 2017-02-07–11 lec00lec04

Data Processing

Lecture #5: Iteration 2017-02-06 HPL 2.1 Wiki: Loops quiz05
Lecture #6: Lists 2017-02-08 HPL 2.2, 2.3.1–3 quiz06
Lecture #7: Mutability 2017-02-13 HPL 2.3.4, 2.5, Ex. 3.39 quiz07
Lecture #8: Nesting & File Input/Output 2017-02-15 HPL 2.4, 4.5–4.6.1 Wiki: File I/O
Lecture #9: Data Sources & Processing 2017-02-20 HPL 6.4.1–4 Wiki: csv; requests · 'plankton.csv'
Lecture #10: Dictionaries 2017-02-22 HPL 6.1.1–2,4,6 jeopardy.csv · Jeopardy script quiz10
exam2 2017-02-28–03-02 lec05lec10 reflection (xc)

Numerical Simulation

Lecture #11: Arrays & Plotting 2017-02-27 HPL 5.2.1–3, 5.3.1–2 inflammation.csv quiz11
Lecture #12: Scientific Modeling 2017-03-01 quiz12
Lecture #13: Numerical Error 2017-03-06 HPL 1.4.3 quiz13
Lecture #14: Debugging 2017-03-08 HPL F.2.1 quiz14
Lecture #15: Effective Code 2017-03-13 HPL 1.4.3, 3.4.2 [1] [2] [3] [4] quiz15
Lecture #16: Random Numbers 2017-03-15 HPL 8.1–5 quiz16
exam3 2017-03-27–29 lec11lec16 reflection (xc)

Problem Solving

Lecture #17: Equation Solving 2017-03-27 HPL 4.11.2 HPL B (may be useful) no quiz
Lecture #18: Optimization (brute force) 2017-03-29 quiz18
Lecture #19: Optimization (heuristic) 2017-04-03 HPL H.8.1 · ·
no quiz
Lecture #20: Exception handling 2017-04-05 HPL H.8.2 quiz20
Lecture #21: Profiling, plotting, etc. 2017-04-10 HPL 4.7 ·
Lecture #22: Python environment, map/filter 2017-04-10 HPL H.6 Solutions quiz22
exam4 2017-04-18–04-20 lec17lec22 reflection (xc)


Lecture #23: MATLAB Basics 2017-04-17 quiz23
Lecture #24: More MATLAB 2017-04-19 plot quiz24
Lecture #25: Equation Solving 2017-04-24 quiz25
Lecture #26: Statistics 2017-04-26 brexit.m · brexit.csv
Lecture #27: Regression and Modeling 2017-05-01 quiz27
Lecture #28: Performance 2017-05-03 quiz28
exam5 2017-05-04–09 lec23lec28

Quizzes become available after the corresponding lecture and are due at 6 p.m. on the day after the lecture (thus on Tuesday or Thursday). Homework due dates are indicated with each assignment, and are similarly due at 6 p.m. on the due date. (Note that quiz00 doesn't count!)

The course will consist of five sections, covering basic computing, data processing, numerical simulation, engineering code, and experimental data and statistics. The first four will take place in Python 3; the last will take place in MATLAB.

Textbook & Materials

Required: Hans Petter Langtangen, A Primer on Scientific Programming with Python, 5th ed. (2016). Book website

Please note that softcover copies are also available through Springer at a price much reduced relative to the hardcover edition. (You'll need to be on the campus network or log in via the library to see the offer.) An e-book is also available through the SpringerLink service, although we highly recommend acquiring a physical textbook.

All in-text code examples are available at the book's website.

Required: i>clicker remote

Register your i>clicker on Compass.

Attendance will be counted starting February 1.


All labs meet in L416 Digital Computer Laboratory.

You should attend your own lab section to complete and submit assignments. Exceptions must be approved in advance (see the FAQ for more information).

Personal electronics (including headphones please) are not allowed to be used during the labs.

Section Lab Time TA
AYA Mon 09h00–10h50 Hong Cheng
AYB Mon 11h00–12h50 Hsuan-Yu Chen
AYC Mon 15h00–16h50 Chaoqun Liu
AYD Tue 09h00–10h50 Harshad Rai
AYE Tue 11h00–12h50 Anirudh Madhusudan
AYF Tue 13h00–14h50 Jennifer Kim
AYG Tue 15h00–16h50 Jennifer Kim
AYH Wed 09h00–10h50 Guoqiao Li
AYI Wed 11h00–12h50 Chaoqun Liu
AYJ Wed 15h00–16h50 Lunan Li
AYK Thu 09h00–10h50 Unnat Jain
AYL Thu 11h00–12h50 Anirudh Madhusudan
AYM Thu 13h00–14h50 Lunan Li
AYN Thu 15h00–16h50 Unnat Jain
AYO Fri 09h00–10h50 Hsuan-Yu Chen
AYP Fri 11h00–12h50 Harshad Rai
AYQ Fri 13h00–14h50 Hong Cheng
AYR Fri 15h00–16h50 Guoqiao Li

Lab queue »


Homework Assignments Due Date
hw00 2017-01-30
hw01 2017-01-30
hw02 2017-02-06
hw03 2017-02-17
hw04 2017-02-27
hw05 2017-03-13
hw06 2017-03-20
hw07 2017-04-07
hw08 2017-04-17
hw09 (email link is preferred) 2017-04-28 (postponed due to Cody login issues)
hw10 2017-05-03 (postponed to better align with current lecture schedule)
hw11 2017-05-03

All assignments are due at 6 p.m. on the date indicated.


Exams Dates Material
exam0 2017-01-31–02-02 (Tue–Thu) policies (extra credit)
exam1 2017-02-07–11 (Tue–Sat) lec00lec04
exam2 2017-02-28–03-02 (Tue–Thu) lec05lec10
exam3 2017-03-27–29 (Mon–Wed) lec11lec16
exam4 2017-04-18–20 (Tue–Thu) lec17lec22
exam5 finals week (throughout) lec23lec28
Exams last 50 minutes and may be accessed only within the CBTF. Since the URL is blocked within CBTF, you'll need to remember to access instead to see the exam.

exam1 has been converted to extra credit, worth 2% towards your exam total.

Python can be accessed in CBTF by typing:
module load python3

This course uses the College of Engineering Computer-Based Testing Facility (CBTF) for its quizzes and exams. More information about the CBTF is available here, including instructions for DRES accommodations.

Exams in the CBTF typically run over multiple days and are available for students to schedule up to 2 weeks in advance. Students can manage their personal reservations at the scheduling page.

The policies of the CBTF are the policies of this course, and academic infractions commited in the CBTF will be pursued as such.

The testing facility is in 57 Grainger Library, in the basement on the east side of the building.

To resolve any exam or scheduling problems (with technology, or missed appointments, broken exams, etc.), student must communicate with proctors in the CBTF as it happens. The proctors will fix the problem or escalate to course staff as needed.

Office Hours

Office hours will be held in L520 Digital Computer Laboratory. Available times are Mondays 4:00–6:00 p.m., Thursdays 4:00–8:00 p.m., and Fridays 1:00–4:00 p.m.


Component Means Fraction of Total Grade Basis
Attendance i>clickers 6% Participation-based; will excuse three
Exams Computer-Based Testing Facility 40% Four total (10% each)
Homework online 26% Fifteen total; will drop two lowest (2% each)
Labs in EWS lab 22% Thirteen total; will drop two lowest (2% each)
Quizzes online 6% Will drop three lowest

Graded materials that are completed on this website (flows like quizzes and exams) can be viewed on your student gradebook from the menu at the top of the page. Labs and participation points are available in Compass.


Students should attend the lecture and lab section for which they registered, or they will receive a zero for that lecture attendance or lab. The two lowest lab grades and three lecture attendances will be dropped, and exams are available over several days. Taken together, this means that almost no exceptions should need to be made for absences. Permitted exceptional absences require proof of overriding considerations. Official proof of absence need to be in forms of doctor's note or letter provided by an authority that clearly states that the purpose of the letter is to prove absence; examples include a doctor's note, notice of travel from an athletic team, etc.; religious or DRES-based exemptions should be handled as directed in their respective policy sections on this website. Special events may be taken into consideration only if we are contacted at least 72 hours in advance. In these exceptional cases, to request an absence, students shall email course administration If the request is for a lab absence, the TA of the lab section should also be cc'd.

When a student has a permitted absence for lab, make-up labs will be arranged. Make-up labs will be held in office hours under supervision of a course TA.

Cheating not only robs you of an opportunity to learn, it also devalues your peers' hard work. Because of this, we take cheating very seriously in this course. The first case of cheating will result in a zero on the assignment or exam. The second case of cheating will result in a zero for the course. We will also report instances of cheating to the college and to your department.

Plagiarism is also very easy to detect in a programming class. Do not take shortcuts. Always do your own work. Note that we encourage discussion on course content. However, please write answers/codes to homework and lab assignments on your own (unless in some labs when you are instructed by your TA to complete assignments in pairs or groups).

Our philosophy in this course is based on the fact that (in real life) most of the time you have access to many resources: websites, peers, mentors, books, and others' source code. Your competence will be greatly increased by the resources you can use without recourse to external references, but when learning it only makes sense to let you function in a realistic manner. Thus, for lab exercises and assignments, you should work alone unless told otherwise, but you may consult outside sources of information. Any consultation is subject to the following restrictions: (1) you may not copy that source's work verbatim (i.e., ALWAYS write YOUR OWN code!); and (2) you must cite all sources used and the contribution they made to your work. This policy is designed to protect you against plagiarism.

You must also protect your own work from plagiarism. If you allow your peers to copy your work, you could end up with academic dishonesty. Do not send solutions to your peers. Do not show them your solution. Do not give out your account passwords. Do not leave your login sessions active.

CS 101 is a required course for the curriculum of many majors. If you have already mastered the material presented in CS 101 and would like to fulfill the requirement, there is a proficiency test available before the beginning of the semester. More information is available here.

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. This policy outlines the procedure that students should follow in requesting an accommodation. The policy attempts to strike a reasonable balance between accommodating religious observances of students and meeting the academic needs and standards of the University. Please complete the Request for Accommodation for Religious Observances form (warning: DOCX file). This form should be submitted by the student to the professor of the course and the Office of the Dean of Students by the end of the second week of the course in the semester in which the request applies.

To insure that disability-related concerns are properly addressed from the beginning, students with disabilities who require assistance to participate in this class are asked to contact course administration as soon as possible. Please include a copy of your DRES accommodations letter. In addition, please read the note on exams at the CBTF above.

There will be a few opportunities for extra credit throughout the semester. Most of these are specific exercises intended to improve your ability to function and learn in the class. Another major opportunity open to you is to identify typos and bugs in the exercises I post—they're not perfect, and if you're the first person to bring it to my attention I'll reward it. But it has to be a real bug in a place where I don't intend a bug!