Computer Science 111

Fundamentals of Programming I

General Information

Instructor Dr. Kenneth A. Lambert
Office Parmly Hall 406
Phone 458-8809
Home page

03: M/W/F 10:10 AM-11:05 AM, Parmly 405

01: M/W/F 11:15 AM-12:10 PM, Parmly 405


03: T 9:05-12:10, Parmly 405

01: R 9:05-12:10, Parmly 405

Office Hours

M/W/F 9:00-10:00 AM or by appointment

T/R 1:00-2:00 PM or by appointment

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 weekly programming projects, weekly quizzes, and a comprehensive final exam.


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

Programs turnin in with syntax errors will receive no credit. A failing grade on the final exam will entail a failing grade for the course.

Attendance and Classroom Etiquette

Final Exam Policy

The final exam for this course will be given during the final exam week. You can take this exam during any of the regularly scheduled exam periods that week. You must supply an exam envelope to the instructor or the department administrative assistant no later than noon on the last day of class. You must specify a provisional day and time on the envelope, which you are free to change on the clipboard provided outside the door of Parmly 407 any time that week. Email or phone requests to reschedule will not be accepted.

The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.

Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by Director of Disability Resources Lauren Kozak.

Academic Integrity

Programming projects, homework exercises, and exams should be written individually. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Please familiarize yourself with W&L’s policy on plagiarism at


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





Sept 5
Week 0

Lab 0

Getting started


Chapter 1

Sept 12
Week 1

Overview of the programming process

Chapter 1

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

Chapter 2  

Lab 1

First programs

GUI programming


Sept 19
Week 2

Control: definite iteration

Chapter 3

Control: if statements and selection

Chapter 3

Lab 2

Simple loops

Control: conditional iteration

Chapter 3

Sept 26 Week 3


Chapter 4

Number systems

Chapter 4

Lab 3

Conditional loops

Working with files

Chapter 4

Oct 3
Week 4

Defining simple functions

Chapter 5

Working with lists

Chapter 5

Lab 4


Case study: a sentence generator program

Chapter 5

Oct 10
Week 5

Working with dictionaries

Chapter 5

Case study: the Doctor program

Chapter 5

No lab:

Reading day

No lecture:

Reading day

Oct 17
Week 6

Top-down design

Chapter 6

Managing the namespace

Chapter 6

Lab 5

Non-directive psychotherapy

Default and optional parameters

Chapter 6


Oct 24
Week 7

Higher-order functions

Chapter 6

Recursive functions

Chapter 6

Lab 6



Chapter 7

Oct 31
Week 8




Object-based programming


Lab 7


Image processing

Chapter 7

Nov 7
Week 9

Image processing



Defining classes

Chapter 8



Lab 8


Defining classes



Nov 14
Week 10

Defining classes


Defining Classes


Lab 9

Defining classes

Model/View/Controller Design Pattern

Chapter 8

Nov 28
Week 11

Data persistence

Chapter 8


Chapter 11

Lab 10

Defining Classes


Chapter 10


Dec 2
Week 12



Chapter 11


Lab 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

11-Introduction to Programmer-Defined Functions

12-Sequences: Lists

13-Generating Sentences


15-The Doctor: An Application of Dictionaries

16-Design with Functions

17-Managing the Namespace

18-Default and Optional Parameters

19-Higher-Order Functions

20-Introduction to Graphics

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

22-Object-Based Programming

23-Introduction to Digital Image Processing

24-Other Image Processing Algorithms

25-Introduction to Programmer-Defined Classes

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

27-Data Modeling and Class Variables I

28-Data Modeling and Class Variables II

29-The Model/View/Controller Design Pattern

30-Persistent Data and Object Serialization

31-Search Algorithms

32-Networks and Client/Server Programming

33-Networks and Concurrency

34-Sort Algorithms


Programming Projects

All Projects (Sakai site)

Links of Interest

Coding General Methods

The breezypythongui Site

Downloading Python

Python Documentation

Errata in Fundamentals of Python

Python Books

Wikipedia's List of Colors

PageTutor's ColorPicker 3.1