You're not currently signed in. Sign in »

ZJUI CS101—Introduction to Computing for Engineering and Science


What When and Where
Lectures Mon/Wed 09h00–09h50; A-0425
Labs Per-section, see below; A-0418
Class URL
Class forum Blackboard »
Instructor email
Co-Instructor email Python Run online »
Online Python Tutor Debug/visualize online »
Online Jupyter Notebook Run online »
Anaconda's latest Python 3.X version to run Jupyter Notebook Download and install »


Lecture Date Supporting Resources
Lecture #1: introduction 2016-09-26
Lecture #2: literals, variables 2016-09-28 Python session
Lecture #3: data types (int, float, str) 2016-10-08 Floating point Overflow/Underflow; Signed-integer representation (Pages 53-55)
Lecture #4: string formatting, functions 2016-10-10
Lecture #5: methods, coding 2016-10-12 Python session; Python formatting codes; Python Integer Overflow
Lecture #6: functions, conditionals 2016-10-17 Python session
Lecture #7: lists, while loops 2016-10-19 Python session
Lecture #8: branched conditionals, for loops, range 2016-10-24
Lecture #9: mutability, list and string methods 2016-10-26 Python session; Floating Point Arithmetic: Issues and Limitations; List/string length; Python built-in functions
Lecture #10: multidimensional indexing, file operations 2016-10-31 Python sessionwords.txt, numbers.txt
Lecture #11: dictionaries, mutable arguments 2016-11-02 Jeopardy example, jeopardy.csv
Python Applications
Lecture #12: workflow, csv, requests 2016-11-09 plankton example · plankton.csv · autos.csv · odyssey.txt
csv module · requests module · sorting dicts
Lecture #13: zip, enumerate, permutations 2016-11-14 Python session; zip function · enumerate function · permutations function
Lecture #14: debugging your code 2016-11-16 · ·
debugging handout
Numerical Python
Lecture #15: numpy, matplotlib 2016-11-21 Python session · inflammation.csv · axis diagram · Software Carpentry NumPy lesson notes
Lecture #16: modeling 2016-11-23 Python session
Lecture #17: modeling & numerical error 2016-11-28 Lecture notes
Lecture #18: randomness 2016-11-30 Python session · pi/4 sequence 1 · pi/4 sequence 2 · nouns.txt · adjectives.txt · names.txt · verbs.txt
Lecture #19: optimization (brute force) 2016-12-05
Lecture #20: optimization (heuristic) 2016-12-07 · ·
Lecture #21: error handling 2016-12-12 square brackets vs parentheses
Lecture #22: MATLAB basics 2016-12-14 MATLAB handout
[No Lecture: Midterm 2 in the evening] 2016-12-19
Lecture #23: MATLAB I/O, functions 2016-12-21 rabbit-bw.jpg · knight-grey.jpg · duck-color.jpg

| [No Lecture: Holiday Break]| 2016-12-26 | | | [No Lecture: Holiday Break]| 2016-12-28 | | | [No Lecture: Holiday Break]| 2016-01-02 | | | Lecture #24: MATLAB statistics | 2016-01-04 | call-by-object-reference . Octave Descriptive Statistics . Octave Extra CORRCOEF . fplot . fzero · lhs.m | | Lecture #25: MATLAB curve fitting | 2016-01-09 | examples.m . brexit.csv · brexit.m · rolling_mean.m · rolling_std.m | | Lecture: Final review | 2016-01-11 | Python mumerical operations on arrays . Numpy ndarray any . Python boolean and integer . Numpy Question · MATLAB Find Array Elements That Meet a Condition|


Homework assignments are due at 6:00 p.m. on the due date. Many homework assignments are from the CodeLab site.

Due 2016-10-01

Due 2016-10-19

Due 2016-10-26

Due 2016-11-02

Due 2016-11-09

Due 2016-11-16

Due 2016-11-25

Due 2016-12-02

Due 2016-12-09

Due 2016-12-20

Due 2017-01-04

Due 2016-01-13

Python Installation

Although we can't provide technical support in setting up your personal machine, if you decide to install Python we warmly recommend using Anaconda Python 3.5.

Octave (Free Verion "MatLab") Installation

You can use an online version of Octave here. You can also download and install Octave on your own laptop or desktop so that you can use it when offline.


Instructor: Zicheng Liao

All labs meet in A-0418. A1: Fri 08h00–09h5; B1: Fri 10h00–11h50

You should attend your own lab section to complete and submit assignments. Exceptions must be approved in advance.

Late Policy: late submission made by Friday 12pm will receive 50% credit; 25% credit by the weekend (Sunday 12pm). No further extension is accepted.

Session Date Supporting Resources Reference ans
Lab#01: python & Linux handson 2016-09-30
Lab#02: strings and operators 2016-10-09
Lab#03: function & more strings 2016-10-14
Lab#04: lists, logic & control 2016-10-28
Lab#05: loops and function logic 2016-11-4
Lab#06: data analysis 2016-11-11
Lab#07: application of list, dict and strings 2016-11-18
Lab#08: application: remapping set for cipher machine 2016-11-25
Lab#09: Modeling fluid behavior 2016-12-01
Lab#10: Celestial Mechanics 2016-12-14
Lab#11: Optimizing over Time 2016-12-16
Lab#12: matlab: earthquake 2016-12-23
Lab#13: weather forecast 2016-1-6


Please bring your campus card and arrive early. Consider visiting the location ahead of time so you know where you'll be taking the exam.

Exam Date Supporting Resources
Midterm #1 November 7, Monday 7pm-9pm in A-0414 -- as the day of the 12th lecture Practice midterm; Midterm solution; Midterm question statistics
Midterm #2 December 19, Monday 7pm-9pm in A-0414 -- No lecture on that day Practice midterm; Answers
Final January 20, Friday 8am-11am in A-0414 Practice final; Answers

Conflict exams are available for students with approved exceptions (such as another exam at the same time). Email course administration prior to the date of the midterm for more information.

Office Hours

All office hours will be held in Office 410 Arts and Science Building.

Office Hours
Please email the instructor to arrange a meeting slot by providing your available meeting slots



Component Fraction of Total Notes
Homework 20% Lowest grade dropped
Labs 25% Lowest grade dropped
Lecture quiz 10% Participation-based; can drop three
Midterms 20%
Final 25% Comprehensive


There is no physical textbook to buy for this course. Below, you will find references that will help you. Some are online textbooks. Others are interactive tutorials. They are listed here in order of quality. If you feel confused or lost, start with Code Academy.

Absence Policy

Students should attend the lecture and lab section for which they registered, or they will receive a zero for that lecture attendance or lab. Permitted 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, travel proof from an athletic team, etc. Special events might be taken into consideration only if it was contacted at least 72 hours in advance. To request for absence, students shall email course administration Requests for lab absence should be sent to

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.

Academic Integrity

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. You'll find the official UIUC university policies on academic integrity here. You can learn more about the UIUC Computer Science Department's stance here.

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 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.