|Office||Tucker Hall 019|
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 Kindle books.
|Brian Kernighan||Understanding the Digital World: What You Need to Know about Computers, the Internet, Privacy, and Security, Princeton University Press, 2017.|
|Edward Snowden||Permanent Record, Metropolitan Books, 2019.|
|Shoshana Zuboff||Surveillance Capitalism: The Fight for a Human Future at the New Frontier of Power, Public Affairs, 2019.|
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 exams to pass the course.
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.
|Course Introduction||Lab 1
|The Binary Number System||Lab 2
|Practice with logic circuits and number systems|
|Machine Organization||Lab 3
The von Neumann Machine
|Machine Language Instructions|
|Assembly Language||Lab 4
Assembly Language Programming
|Python Programming Basics|
Python Programming Flow of Control
|Python Programming Data Structures|
|Image Processing Basics||
|Finding Faster Algorithms|
|Sort Algorithms||Lab 8
|Networks and the Internet||Lab 9
|Discussion of Permanent Record|
|The World Wide Web||Lab 10
|AI and Data Analysis||Lab 11
|Discussion of The Age of Surveillance Capitalism|
|Privacy and Security
|Wrapup and Conclusion|
Why Should I Study Computer Science?
PageTutor's ColorPicker II
GIMP for Image Manipulation