Computer Science 111

Fundamentals of Programming I

General Information

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

M/W/F 1:30 PM-2:30 PM, Parmly 405


T 1:30-4:30, Parmly 405

Office Hours

M/T/W/F 10:30-11:30 AM, 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, Second edition (Course Technology, 2019, ISBN-13: 978-1-337-56009-2). 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 morning, 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

The quizzes and the final exam should be written individually and pledged.

Although you may discuss programming problems among yourselves, your programs should be your own work, unless otherwise specified (as when you do pair programming). You MAY use code from the PowerPoint slides or from the textbook for the course. Otherwise, you may NOT use the work of your classmates, former students, friends, or anyone else in writing your programs. By "use" I mean turning in the work of others as your own, or even casting your eyes upon the work of others with a view to incorporating their solutions into your own. Deliberate concealment of sources constitutes plagiarism and will result in a failing grade for the course and a report to the EC. Deliberately providing solutions to other students, either verbally or in writing, via hardcopy or electronic transmission, will result in a failing grade for the course and a report to the EC. In particular, you may not share your work until the deadline to hand in material has passed. Please familiarize yourself with W&L’s policy on plagiarism.


Washington and Lee University makes reasonable academic accommodations for qualified students with disabilities. All undergraduate accommodations must be approved through the Title IX Coordinator and Director of Disability Resources, Elrod Commons 212, (540) 458-4055. Students requesting accommodations for this course should present an official accommodation letter within the first two weeks of the 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 must be arranged with the professor at least a week before the date of the test or exam, including finals.

Tentative Schedule





Sept 2
Week 0




Chapter 1

Sept 9
Week 1

Overview of the programming process

Chapter 1

Lab 1

First programs

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

Chapter 2  

The software development lifecycle

Sept 16
Week 2

Control: definite iteration

Chapter 3

Lab 2

Simple loops

Control: if statements and selection

Chapter 3

Control: conditional iteration

Chapter 3

Sept 23 Week 3


Chapter 4

Lab 3

Conditional loops

Number systems

Chapter 4

Working with files

Chapter 4

Sept 30
Week 4

Defining simple functions

Chapter 5

Lab 4


Working with lists

Chapter 5

Case study: a sentence generator program

Chapter 5

Oct 7
Week 5

Working with dictionaries

Chapter 5

Lab 5

Text processing

Non-directive psychotherapy

Top-down design with functions

Chapter 6

No Lecture

Reading Day

Oct 14
Week 6

Default and optional parameters

Higher-order functions

Chapter 6

Lab 6


Managing the namespace

Chapter 6


Chapter 7

Oct 21
Week 7


Chapter 7

Lab 7

Turtle graphics

Object-based programming

Chapter 7

Image processing

Chapter 7

Oct 28
Week 8

Image processing

Lab 8


GUI programming

Chapter 8



GUI programming

Nov 4
Week 9

GUI programming



Lab 9

GUI programming

Defining Classes

Chapter 9



No lecture:

Reading day

Nov 11
Week 10

Defining Classes


Lab 10

GUI programming

Defining Classes

Chapter 9

Defining Classes

Chapter 9

Nov 18
Week 11

Model/View/Controller Design Pattern

Chapter 9

Lab 11

Defining Classes

Data Persistence

Chapter 9


Chapter 10


Dec 3
Week 12


Lab 12


Searching and Sorting

Chapter 11





2-Overview of Programming

3-Basic Elements: Input, Computations, Output

4-The Software Lifecycle

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

14-Dictionaries and the Doctor Program

15-Design with Functions

16-Default and Optional Parameters and Higher-Order Functions

17-Managing the Namespace

18-Introduction to Graphics

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

20-Object-Based Programming

21-Introduction to Digital Image Processing

22-More Digital Image Processing

23-Introduction to Graphical User Interfaces

24-Windows, Labels, and Command Buttons

25-Panels, Data Fields, and Message Boxes

26-Text Areas, Radio Buttons, Check Buttons, Prompter Boxes, and Working with Colors

27-Programmer-Defined Classes

28-Data Modeling with Classes I

29-Data Modeling with Classes II

30-The Model/View/Controller Design Pattern

31-Persistent Data and Object Serialization

32-Networks and Client/Server Programming

33-Networks and Concurrency

34-Search Algorithms

35-Sort Algorithms

Programming Projects

All Projects (Sakai site)

Links of Interest

Downloading Python

Python Documentation

Example Programs in the Textbook

Errors Found in the Textbook

The breezypythongui Site

Coding General Methods

Python Books

Wikipedia's List of Colors

PageTutor's ColorPicker 3.1