CSCI 111: Fundamentals of Programming I (F19)

Computer Science 111
Fundamentals of Programming I

General Information

Instructor Dr. Simon D. Levy
Office Parmly Hall 407B
Phone 458-8419
Home page
Lecture MWF 2:45-3:45 PM, Parmly 405
Lab Thurs 1:30-4:30, Parmly 405
Office Hours MWF 10:45-11:45, MW 3:45-4:45, and by appointment.  I’m usually in my office outside of class time and lunchtime.

Brief Overview

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

  • the design and implementation of algorithms for solving problems
  • an introduction to syntax, semantics, and pragmatics of the Python programming language
  • a survey of various types of programming applications such as numerical computation, text processing, graphics, image processing, and networking

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

  • apply your problem solving skills and knowledge of data structures to a wide variety of computational problems
  • understand the syntax and semantics of the Python programming language
  • describe a program’s functionality in plain English
  • detect, diagnose, and fix errors in a program, using systematic testing and debugging techniques
  • understand the ethical and historical context of computing
  • undertake further study of computer science


The following textbook is required:

Lambert, Fundamentals of Python: First Programs , 2nd Edition (Course Technology, 2018, ISBN-13: 978-1337560092).


The written work for the course will consist of

  • Programming projects (50% of the grade)
  • Three hourly exams (30% of the grade)
  • A comprehensive final exam (20% of the grade)
  • Programming projects (labs) are due in your Sakai dropbox at 11:59PM MondayPrograms turned in with syntax errors will receive no credit.

The grading scale will be 93-100 A; 90-92 A-; 87-89 B+; 83-86 B; 80-82 B-; 77-79 C+; 73-76 C; 70-72 C-; 67-69 D+; 63-66 D; 60-62 D-; below 60 F.

Attendance and Other Policies

  • It is very important that you attend lectures. There will be considerable information given in class that is not available elsewhere.
  • Attendance in lab is required.
  • Prompt arrival at labs and lectures is expected.
  • The use of laptops and mobile computing devices is permitted during class so long as they are being used for the course such as for taking notes and locating information related to the course. These devices are not to be used during class for texting, phone calls, reading email, social networking, completing assignments for other courses, or shopping.

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.

Final Exam

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 Dean Price (sophomores, juniors or seniors) or Director of Disability Resources Lauren Kozak (first-years).


Monday Wednesday Thursday Friday
02 Sept
Week 0
Lab 1


Chapter 1

09 Sep
Week 1
Overview of the programming process

Chapter 1

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

Chapter 2

Lab 2 The Software Development Lifecycle
16 Sep
Week 2
Control: definite iteration

Chapter 3

Control: if statements and selection

Chapter 3

Lab 3

Control: conditional iteration

Chapter 3

23 Sep Week 3 Strings

Chapter 4

Number systems

Chapter 4

Lab 4

Working with files

Chapter 4

30 Sep
Week 4
Defining simple functions

Chapter 5

Working with lists

Chapter 5

Lab 5

First hourly exam
07 Oct
Week 5
Lists and functions

Chapter 5

Working with dictionaries

Chapter 5

Reading day Reading day
14 Oct
Week 6
Top-down design and recursive functions

Chapter 5


Default and optional parameters / higher-order functions

Chapter 6

Lab 6

Managing the namespace

Chapter 6


21 Oct
Week 7

Chapter 6


Chapter 7

Lab 7


Chapter 7

28 Oct
Week 8
Object-based programming

Chapter 7


Image Processing

Chapter 7

Lab 8

Second hourly exam
04 Nov
Week 9
GUI programming

Chapter 8


GUI programming

Chapter 8


Lab 9

Defining classes

Chapter 9


11 Nov
Week 10
Defining classes

Chapter 9

Defining Classes

Chapter 9

Lab 10

Review for Exam
18 Nov
Week 11
Third hourly exam Networks and client/server programming

Chapter 10

Lab 11

02 Dec
Week 12
Networks Searching

Chapter 11

Lab 12


Chapter 11



Overview of Programming

Basic Elements: Input, Computations, Output

The Software Development Lifecycle

Definite Loops: The for Statement

Making Choices: if Statements

Indefinite Loops: The while Statement

Introduction to Strings

Number Systems

Text Files

Study to here for Exam #1

Introduction to Programmer-Defined Functions

Sequences: Lists


Design with Functions

Default Parameters and Higher-Order Functions

Managing the Namespace

Introduction to Graphics

Advanced Turtle Graphics: Recursive Patterns in Art and Nature

Introduction to Object-Based Programming

Study to here for Exam #2

Introduction to Digital Image Processing

More Image Transformations

Introduction to Graphical User Interfaces

GUI windows, labels, buttons

Programmer-defined Classes (part 1)

Programmer-defined Classes (part 2)

Programmer-defined Classes (part 3)


Networks (part1)

Networks (part2)