Week Tuesday Thursday
1 Sept. 5th
Lecture 1 / Lab 1. Welcome to CS5001/CS5003 / Introduction to Python
presentation:small Slides, document:small [PDF], youtube:small Screencast
macbook:small Install PyCharm (before first class, if possible!)

document:small Handout: CS5001 Course Information (see below for Syllabus)

notepad:small Lab Handout
book_1:small Textbook

book_1:small Reading: Ch 1, 2.1-2.5

notepad:small Assignment 1 released

Introductions, course administration and expectations. We will ensure that everyone has their development environment working on their laptops, and we will write our first programs! Topics:

  • What is computer science?
  • What is programming? (and why is it different than computer science?)
  • What is "Python"?
  • Variables
  • Assignment
  • Arithmetic Operations
  • Using Python from a "REPL"
  • Using a Python Integrated Development Environment
  • Some simple (but interesting!) programs
2 Sept. 10
Lecture 2. Functions, Passing values to functions, Branching
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 3, 5.1-5.4

code:small Code
notepad:small Assignment 1 due
notepad:small Assignment 2 released

Today, we will start to talk about code that is "re-usable," in the form of functions. Functions enable a programmer to use pre-built code to perform a particular task. We will also talk about how you control a function by passing it data that you want it to use. Finally, we will demonstrate how to control a program based on logic, which significantly enhances what we can do with programming. Topics:

  • Functions
  • Passing values to functions
  • Branching
  • Writing your own functions
  • Using doctest to test your own functions
Sept. 12
Lab 2: Using functions from libraries and writing your own functions
notepad:small Lab Handout
In this lab you will practice your skills on conditional expressions and with writing and testing functions.
3 Sept. 17
Lecture 3. More on branching, iteration, lists
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 5.6-5.7, 7.1-7.4, 10.1-10.4

code:small Code
notepad:small Assignment 2 due
notepad:small Assignment 3 released

Today, we will continue to discuss branching, and then we will talk about iteration, which is the repetition of a section of code. We will also talk about how to stop iteration before it would normally terminate (called a break), and then we will introduce our first data structure, called a list. Topics:

  • Branching (continued)
  • Iteration (while loops)
  • Repeat Until...
  • Breaking out of a loop
  • Introduction to the list data structure
Sept. 19
Lab 3: Encryption and Decryption
notepad:small Lab Handout
Tonight's lab will be all about encryption and decryption! You will write functions to do both. This will test your looping abilities and your arithmetic abilities.
4 Sept. 24
Lecture 4. Iteration (continued), tuples, list slicing, list comprehensions, strings
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 8, 10.1-10.4

Today, we will continue to talk about iteration (including the continue statement!), and we will talk more about using lists. We will also more formally introduce the idea of strings, which consist of text that you will use in your programs. Topics:

  • Iteration (continued)
  • List slicing
  • List comprehensions
  • Strings
Sept. 26
Lab 4: Practice with Lists and Strings
notepad:small Assignment 3 due
notepad:small Assignment 4 released

notepad:small Lab Handout
In this week's lab, we will practice many examples of list and string functions. They are the kind of functions you might see in a midterm or final exam, and during programming interviews.

5 Oct. 1
Lecture 5. Recursion and Dictionaries
Lecture 5: Dictionaries and Recursion presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 3, 5.8-5.12, Ch 11

code:small Code
notepad:small Assignment 4 due
notepad:small Assignment 5 released

Today, we will discuss an powerful concept called "recursion," which is simply defined as a function calling itself. This topic tends to scare people, but we will take it slow and have many examples. Topics:

  • Recursion
  • Tracing recursive functions
  • Introduction to the dict data structure.
Oct. 3
Lab 5: Turtles, Dictionaries, and Recursion
notepad:small Lab Handout
Today, we will investigate Turtle graphics, and we will see some recursion, as well.
6 Oct. 8
Lecture 6. File processing and exception handling
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 14.1-14.5

code:small Code
Today, we will talk about how to interact with the file system on your computer, so that you can read from and write to files. We will also talk about exception handling which is a way to keep your program running properly if something unexpected happens (e.g., what if a file you want to read doesn't exist?). Topics:

  • File processing
  • Exception handling
Oct. 10
Lab 6: File I/O and exceptions: Facebook and the Seven Dwarfs
notepad:small Lab Handout
This week, you will write a mini-Facebook that manipulates the friend lists of the Seven Dwarfs.
notepad:small Assignment 5 due
notepad:small Assignment 6 released

7 Oct. 15
Lecture 7. Midway Recap and Midterm exam preparation
presentation:small Slides, [PDF], Screencast
code:small Code
notepad:small Assignment 6 due
notepad:small No assignment -- start studying for midterm!

Oct. 17
Lab 7: Midterm Preparation.
notepad:small Lab Handout
In this week's lab, you will be testing the software we will use for next week's midterm exam, and you will be practicing similar problems to the ones you will see on the exam.
8 Oct. 22
Midterm Exam (in class)
notepad:small Assignment 7 released

Oct. 24
Lab 8: Bouncing Balls notepad:small Lab Handout
Tonight you will be getting a preview on classes and Object Oriented Programming. Enjoy!
9 Oct. 29
Lecture 8. Object oriented programming, and intruducing the stack and queue data structures.
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 15 (re-read!)

code:small Code
notepad:small Assignment 7 released

Today, we jump into the world of object oriented programming. We will introduce classes and objects, and we will talk about why OOP is important. We will also start disussing better ways to test your code, specifically with a notion of unit testing, which comprises a series of tests that try to ensure that each part of your program is correct. We will also introduce two useful data structures called the stack and the queue. These similar data structures are used to solve many different types of problems in computing. Topics:

  • OOP
  • The stack
  • The queue
Oct. 31
Lab 9: The CalendarEvent class.
notepad:small Lab Handout
This week, we will be delving deeper into classes, and you will write a CalendarEvent class that holds events for a calendar.
10 Nov. 5
Lecture 9. More OOP, Stacks, Queues
presentation:small Slides, [PDF], Screencast
  • More Object Oriented Programming
  • Stacks
  • Queues
notepad:small Assignment 7 released

Nov. 7
Lab 10: Turtle Stacks
notepad:small Lab Handout
Tonight, you will create a stack class that enables you to draw rectangles on and off the screen.
11 Nov. 12
Lecture 10. Searching and Sorting
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Appendix B

code:small Code
notepad:small Assignment 10 released

Two important tasks that programmers frequently do is to search through data, and to sort data. In both cases, there are multiple ways to perform the tasks, and some are fast and efficient, while others are slow and inefficient. We need to learn which ones to use, and when!

Nov. 14
Lab 10: Searching and Sorting
notepad:small Lab Handout
In this lab you will be practicing writing searching and sorting algorithms.
12 Nov. 19
Lecture 11. Using Python for Artificial Intelligence
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 3, 5.1-5.4

code:small Code

Nov. 21
Lab More sorting and searching.
notepad:small Lab Handout
13 Nov. 26
Lecture 12. Iterators, Generators, and Lambda Functions
presentation:small Slides, [PDF]
book_1:small Reading: Ch 3, 5.1-5.4

code:small Code
notepad:small Assignment 8 released

Today we will learn about iterators, generators, lambda functions, and sets. We have used iterators frequently (e.g., when we traverse a list in a for loop), but we will learn how to create iterators directly. We will also learn how to create a generator, which can generate iterators for us. We will also learn about lambda functions, which are anonymous functions (without a name) and they are useful in some situations. Finally, we will learn about the set data structure, which allows us to store unique elements and to compare sets together.

Nov. 28
No Lab (Thanksgiving Break)
14 Dec. 3
Lecture 13. Review and Wrap-up
presentation:small Slides, [PDF], Screencast
book_1:small Reading: Ch 3, 5.1-5.4

code:small Code
Today we will review and wrap up the course.

Dec. 5
Optional lab: review and help with assignment 8
15 Dec. 10
Final Exam

Website design based on a design by Chris Piech
Icons by Piotr Kwiatkowski