Computer Science 101

Survey of Computer Science

General Information

Professor Ken Lambert
Office Tucker Hall 019
Phone 458-8809
Home page



Office Hours

M/W 2:45-4:15

T 8:30-11:30 (Section 01), 1:30-4:30 (Section 02)

M/W 12:30-2:00

Brief Overview

The main goal of this course is to give the student a broad overview of the discipline of computer science. We do this by providing an introduction to several major areas of computer science.

We begin by exploring the basic circuits from which computer components are made. You will learn an algorithm for designing simple circuits and will learn the functions of the major internal components of a computer. Laboratories allow you to design and test example circuits.

We gain further insight into the low-level operations of a computer by studying the basic instructions that a computer can execute. To do this, we focus on a very simple, hypothetical computer. We look at its instruction set, how these instructions are carried out in the hardware, and how simple programs can be written at this level. The labs involve writing and testing short machine language and assembly language programs. The simulator used in the lab runs these programs in a step by step fashion so that you can observe what is happening inside the computer at each step.

We then further explore the notion of an algorithm, which is a step by step method for solving a general class of problems. We study some of the important algorithms of computer science and learn how computer scientists classify algorithms according to their efficiencies. Laboratories make use of animations of some algorithms and allow the student to apply classroom theory to predict run times for certain algorithms.

To learn more about writing programs for a computer, we write some Python code for processing digital images. Laboratories involve writing or modifying programs that convert color images to grayscale, among other transformations.

Other topics for the course include an exploration of the principles underlying such applications as networks, data analysis, and issues related to surveillance and privacy.


The following books are available at the University Store or as ebooks.

Brian Kernighan Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security, Second Edition, Princeton University Press, 2021. Understanding the Digital World
Edward Snowden Permanent Record, Metropolitan Books, 2020. Snowden
Shoshana Zuboff Surveillance Capitalism: The Fight for a Human Future at the New Frontier of Power, Public Affairs, 2019. Surveillance Capitalism


The written work for the course will consist of

All assignments will be distributed via Canvas and turned in via Canvas. Each assignment includes a turnin "window" with a firm deadline. It is your responsibility to be aware of all deadlines. Late work will not be accepted.


It is very important that you attend class. There will be considerable information given in class that is not available elsewhere. At times, I will give a preview of the lab in class.

You should always attend the lab section for which you are enrolled. Make prior arrangements with me if there are extenuating circumstances. Unless you do this late lab work will not be accepted. I repeat, late lab work will not be accepted.

It is necessary, but not sufficient, that you complete all the labs and book reviews to pass the course.

Honor System

Unless stated otherwise, all quizzes will be written without books or notes and without assistance from other people. The work of others should be properly cited in all papers. Lab work should be done individually unless I state otherwise. Although you may discuss programming problems among yourselves, your programs should be your own work. 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 this 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.


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 of Lectures and Labs

  Monday Tuesday (Lab) Wednesday
September 13
Week 1
Course Introduction Lab 1
Logic Gates
Boolean algebra
Circuit Design
September 20
Week 2
The Binary Number System Lab 2
Logic Circuits
Practice with logic circuits and number systems
September 27
Week 3
Machine Organization Lab 3
The von Neumann Machine
Machine Language Instructions
October 4
Week 4
Assembly Language Lab 4
Assembly Language Programming
Python Programming Basics
October 11
Week 5

Python Programming Flow of Control

Lab 5
Python Programming
Python Programming Data Structures
October 18
Week 6
Python Programming Data Structures

Lab 6
Text Processing


Image Processing Basics
October 25
Week 7
Image Transformations Lab 7
Image Processing
Algorithm Basics
Search Algorithms
November 1
Week 8
Finding Faster Algorithms Lab 8
Discussion of Permanent Record
Sort Algorithms
November 8
Week 9
Recursive Algorithms Lab 9
Sort Timing
Networks and the Internet
November 15
Week 10
The World Wide Web Lab 10
HTML Programming
HTML Programming
November 29
Week 11
AI and Data Analysis Lab 11
Discussion of The Age of Surveillance Capitalism
Privacy and Security
December 6
Week 12
Data Encryption
Lab 12
Data Encryption
Wrapup and Conclusion


Lab Projects

Goto Canvas


Why Should I Study Computer Science?

PageTutor's ColorPicker II

GIMP for Image Manipulation