[ news | information | syllabus | labs | links ]

Introduction to Computer Science in Python (CSCI 051p)

Lectures: MWF11-11:50 in Edmunds 114
Lab: F 1:15-4 in Edmunds 219 and 229

Instructors: Eleanor Birrell and Yi Chen

TAs: Gabe Magee (head TA), Janice Lee, Thummin Mekuria, Ruben Pacheco-Caldera, Cassie Wang, Gina Wang


News

We will be using piazza for posting information (including the weekly labs and assignments) and for answering questions, so please make sure you're signed up for this class on piazza.

Information

Computer Science 051p is an introduction to the field of computer science using the Python programming language. We will cover topics including iteration and recursion, basic data structures, sorting and searching, elementary analysis of algorithms, and an introduction to object-oriented programming. There will be a special emphasis on working with and making sense of data in order to connect course material with applications in other disciplines.

By the end of this course we hope you have a good basic understanding of how to develop (design, code, and debug) medium-sized programs in Python, and have a basic understanding of how one might analyze programs for correctness and efficiency.

This course (or one of the other variations of CSCI 051) is a prerequisite for all upper level Computer Science courses. In this course we do not assume that you have had any previous computer programming experience in any language. If you have had significant previous experience, please come talk to one of the instructors as cs52 or cs54 may be more appropriate. The required textbook for the class is Think Python, 2nd edition by Allen Downey. The pdf is freely available. However, if you prefer having a physical copy as well, we've also placed an order for the book at Huntley bookstore.

Some of the materials used in this class are inspired by materials created by other people for various other classes (including CS30 at Pomona).

Syllabus

Any topics or assignments that are listed for dates in the future should be taken as (potentially very) tentative. Anything for a date at least 2 days in the past will accurately reflect what actually happened in the class.

Lecture notes (if any) will be posted on piazza.

The readings will be most useful if done before that day's lecture.

Week Date In class Readings for class Assignments due
1 (Wed) 9/5 introduction
python basics, values, types
Ch 1-2
(Fri) 9/7 variables, operators Ch 2
(Lab) 9/7 lab 1 - introduction to pycharm, python
2 (Mon) 9/10 operators, booleans, conditionals Ch 5 assignment 1 due 11PM
(Wed) 9/12 conditionals Ch 5
(Fri) 9/14 coding style, functions, return values Ch 3
(Lab) 9/14 lab 2 - conditionals
3 (Mon) 9/17 functions, parameters, arguments Ch 3 assignment 2 due 11PM
(Wed) 9/19 functions, parameters, arguments Ch 3
(Fri) 9/21 scope, modules Ch 3
(Lab) 9/21 lab 3 - functions, operators
4 (Mon) 9/24 functions, while loops assignment 3 due 11pm
(Wed) 9/26 for loops, turtle graphics Ch 4, 5
(Fri) 9/28 turtle graphics, review Ch 4
(Lab) 9/28 lab 4 - loops, graphics
5 (Mon) 10/1 * checkpoint 1 *
(Wed) 10/3 recursion Ch 5, 6
(Fri) 10/5 recursion Ch 5, 6
(Lab) 10/5 lab 5 - recursion
6 (Mon) 10/8 recursion without graphics
range(), strings
Ch 6, 8 assignments 4 and 5 due 11PM
(Wed) 10/10 strings, files Ch 8, 9
(Fri) 10/12 strings, files Ch 8, 9
(Lab) 10/12 lab 6 - strings
7 (Mon) 10/15 intro to data structures, lists Ch 10
(Wed) 10/17 lists Ch 10 assignment 6 due 11pm
(Fri) 10/19 lists Ch 10
(Lab) 10/19 * programming checkpoint *
8 (Mon) 10/22 *** no class - Fall recess ***
(Wed) 10/24 lists, tuples, review Ch 10, 12
(Fri) 10/26 * checkpoint 2 *
(Lab) 10/26 lab 7 - files, lists
9 (Mon) 10/29 nested lists Ch 10 assignment 7 due 11pm
(Wed) 10/31 nested lists Ch 10
(Fri) 11/2 copying lists, dictionaries Ch 10, 11
(Lab) 11/2 lab 8 - nested lists
10 (Mon) 11/5 dictionariesCh 11 assignment 8 due 11pm
(Wed) 11/7 dictionaries, plotting Ch 11, pyplot tutorial
(Fri) 11/9 object-oriented programming Ch 16, 17
(Lab) 11/9 lab 9 - dictionaries, plotting
11 (Mon) 11/12 object-oriented programmingCh 16, 17 assignment 9 due 11PM
(Wed) 11/14 object-oriented programming Ch 16, 17
(Fri) 11/16 * checkpoint 3 *
(Lab) 11/16 lab 10 - oop
12 (Mon) 11/19 discussion of final program assignment 10 due 11PM
(Wed) 11/21 *** no class/lab - Thanksgiving ***
(Fri) 11/23
13 (Mon) 11/26 sorting algorithms, selection sort
(Wed) 11/28 insertion sort, linear/binary search
(Fri) 11/30 mergesort, browsers and servers
(Lab) 11/30 lab 11 - algorithms
14 (Mon) 12/3 resources, intro to html assignment 11 due 11pm
(Wed) 12/5 beautifulsoup
(Fri) 12/7 webpages, css
(Lab) 12/7 work on final program
15 (Mon) 12/10 javascript
(Wed) 12/12 javascript, wrap-up final program due 4PM

The final exam will be on Thursday 12/20 from 9am-noon in Edmunds 114.

Grade distribution

Final grades will be determined by grades on labs, test programs, the midterm, and the final.

WorkProportion
Labs and Assignments40%
Final Programming Project20%
Checkpoints24%
Final exam16%

Links

The following links may be helpful (let me know if you find anything that you feel should be included!) :

  • Think Python, 2e: this is the webpage for our textbook. You can download the pdf, get the html, and order a hardcopy from this website. Make sure you're looking at the 2nd edition!
  • PyCharm: this is the webpage for the IDE that we're using. You can download a copy of the Community Edition of PyCharm here. The version on the lab machines is 2018.2.1
  • python.org: this is the main page for all things python. You can download python 3 (make sure you download python 3 and not python 2!), find documentation, and even some tutorials.
  • How to Think Like a Computer Scientist: Interactive Edition
  • CodingBat Python

  • "Computers do not solve problems, they execute solutions"
    --Laurent Gasser