Computer Science 111

Fundamentals of Programming I

General Information

Instructor Dr. Simon D. Levy
Office Parmly Hall 407B
Phone 458-8419
Home page

M/W/F 9:05 AM-10:00 PM, Science Center G14


T 9:05-12:10, Parmly 405

T 2:30-5:35, Parmly 405

Office Hours

Daily 11-12, 2:30-3:30 or by appointment. I'm usually in my office outside of classtime and lunchtime.

Brief Overview

This is an introductory course in programming and problem solving. Topics include

Classroom work will consist of lecture, discussion, and lab experimentation. Written work will consist of several programming projects and exams.


Course Objectives

After taking this course, you should be able to


The following textbook is required:

Lambert, Fundamentals of Python: First Programs (Course Technology, 2012, ISBN-13: 978-1-111-82270-5). Fundamentals of Python: First Programs




The written work for the course will consist of

Attendance and Other Policies

Academic Integrity

Programming projects, homework exercises, and exams should be written individually. It is extremely simple to tell when someone has copied someone else's program. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. You are better off turning in nothing than turning in someone else's work.


Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Office of the Dean of the College. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the (fall or winter) term and schedule a meeting outside of class time to discuss accommodations. It is the student's responsibility to present this paperwork in a timely fashion and to follow up about accommodation arrangements. Accommodations for test-taking should be arranged with the professor at least a week before the date of the test or exam.

Tentative Schedule





07 Sept
Week 0


Chapter 1

14 Sep
Week 1

Overview of the programming process

Chapter 1

Lab 1

First programs

Data types, literals, variables, expressions, and I/O

Chapter 2  

GUI Programming


21 Sep
Week 2

Control: definite iteration

Chapter 3

Lab 2

circle project

Simple loops

Control: if statements and selection

Chapter 3

Control: conditional iteration

Chapter 3

28 Sep Week 3


Chapter 4

Lab 3

Conditional loops

Number systems

Chapter 4

Working with files

Chapter 4

05 Oct
Week 4

Defining simple functions

Chapter 5

Lab 4



Working with lists

Chapter 5

First hourly exam

12 Oct
Week 5

Lists and functions

Chapter 5

Lab 5a

Sentence generation

Working with dictionaries

Chapter 5

Reading day

19 Oct
Week 6

Case study: the doctor program

Chapter 5

Lab 5b

Non-directive psychotherapy

Top-down design and recursive functions

Chapter 6

Managing the namespace

Default and optional parameters

Chapter 6


26 Oct
Week 7

Higher-order functions

Chapter 6

Lab 6



Chapter 7


Chapter 7

02 Nov
Week 8

Object-based programming

Chapter 7


Lab 7


Image processing

Chapter 7

Second hourly exam

09 Nov
Week 9

Image processing

Chapter 7


Lab 8


Defining classes

Chapter 8


Defining classes

Chapter 8


16 Nov
Week 10

Defining classes

Chapter 8

Lab 9

Defining classes

Defining Classes

Chapter 8

Graphical User Interfaces

Chapter 9

30 Nov
Week 11

Third hourly exam

Lab 10

Networks and client/server programming

Chapter 10


07 Dec
Week 12


Lab 11



Chapter 11


Chapter 11



2-Overview of Programming

3-Basic Elements: Input, Computations, Output

4-User Interfaces and GUI Programming

5-Definite Loops: The for Statement

6-Making Choices: if Statements

7-Indefinite Loops: The while Statement

8-Introduction to Strings

9-Number Systems

10-Text Files

Study to here for Exam #1

11-Introduction to Programmer-Defined Functions

12-Sequences: Lists


14-The Doctor: An Application of Dictionaries

15-Design with Functions

16-Managing the Namespace

17-Default Parameters and Higher-Order Functions

18-Introduction to Graphics

19-Advanced Turtle Graphics: Recursive Patterns in Art and Nature

20-Introduction to Object-Based Programming

Study to here for Exam #2

21-Introduction to Digital Image Processing

22-More Image Transformations

23-Introduction to Programmer-Defined Classes

24-Common Methods: String Representation, Equality, Operators, and Comparisons

25-Data Modeling and Class Variables

26-Persistent Data and Object Serialization

27-The Model/View/Controller Pattern

Study to here for Exam #3

28-Networks and Client/Server Programming

29-Networks and Concurrency

30-Search Algorithms

Links of Interest

Practice Exam 1

Practice Exam 2

Practice Exam 3

The breezypythongui Site

Getting Started with Python in the Computer Science Lab

Remote Access to Your Computer Science Account

Errata in Fundamentals of Python

Python Information

Wikipedia's List of Colors

PageTutor's ColorPicker 3.1