Skip to Main Content
It looks like you're using Internet Explorer 11 or older. This website works best with modern browsers such as the latest versions of Chrome, Firefox, Safari, and Edge. If you continue with this browser, you may see unexpected results.
Lloyd Sealy Library
John Jay College of Criminal Justice


OER Course Conversion Projects


OER for CSCI 171

The Nature of Computers and Computation



Zero-Cost Textbooks 

Other Resources

  • The website will be used as a source for Python readings and (some) exercises.
  • The instructor will provide excerpts from When Computers Were Human by David Alan Grier, Princeton, 2007 (ISBN 9780691133829). (abbreviated as [G]). Used under the Fair Use Provision of the US Copyright Act.
  • The instructor will provide excerpts from Data and Goliath: The Hidden Battles to Collect Your Data and Control Your World by Bruce Schneier, W.W. Norton and Co, 2016 (ISBN 978-0393352177). (abbreviated as [B]). Used under the Fair Use Provision of the US Copyright Act.
  • The instructor will provide excerpts from A History of Computing Technology, 2nd Edition by Michael R. Williams, Wiley-IEEE, 1997 (ISBN 0818677392). (abbreviated as [W]). Used under the Fair Use Provision of the US Copyright Act.
  • The instructor will provide excerpts from The Universal History of Computing: From the Abacus to the Quantum Computer by Georges Ifrah, Wiley, 2002 (ISBN 0471441473). (abbreviated as [I]). Used under the Fair Use Provision of the US Copyright Act.
  • The instructor will provide excerpts from CODE: The Hidden Language of Computer Hardware and Software by Charles Petzold, Microsoft, 2000 (ISBN 978-0-7356-1131-3). (abbreviated as [P]). Used under the Fair Use Provision of the US Copyright Act.

Weeks 1 & 2

  • Programming aspect: Students become familiarized with a development environment.
  • Activities:
    • Create the traditional first program, "Hello World", in both Python and C. View an object dump of the compiled C program revealing how C has been translated into assembly. (No attempt to understand the assembly.) Compare and contrast C and Python, as examples of compiled and interpreted languages, respectively. Discuss basic file system concepts such as relative and absolute path, and basic directory navigation commands: cd, ls, ., .., vim,cat.
    • Reading:​ 
  • Humanistic aspect: A high-level discussion of the difference between calculation and computation, in which it is explained that computers are not large calculators, but use logic in addition to arithmetic to achieve a universal capacity to compute. Early computer-like devices considered: Antikthyra device, Pascal's arithmetic machine, Leibniz's improvements. Leibniz's notion of a calculus ratiocinator, Babbage's analytical and difference engines.
  • Reading: [IAFK] sections 11.2-11.5, pp. 87-91.

Project 1 Assigned

Summary: (Sketch -- this project will be thoroughly described in a handout) Write a program which downloads the most recent MTA turnstyle data from and displays the name of the subway station with the most turnstyle entrances and exits in the previous 24 hours.   Due: 2 Weeks

Week 3

Programming aspect: Students learn about simple variable types. Focusing on Python, we study ints, floats, strings and lists. Conversions between strings, lists, ints, floats, etc. Play around with some list-based functions: max(),min(),reversed(),sorted(),index(),count(),find(),rfind().

  • Reading: 

  • Activities: Open a large text file (such as a novel from Project Gutenberg). Make a list of the individual words in the text. Count the number of words, as well as the number of distinct words. Output a version of the novel which has no punctuation and contains only lowercase letters. The instructor might want to provide supplementary code that helps represent student output on word frequency in the form of a histogram. For this and other exercises the instructor should write a large amount of the code, but leave key pieces to the students relating to the syntactical topic at hand.

Humanistic aspect: Discussion of the concept of an algorithm, which is a fixed procedure for accomplishing a goal. Give examples of algorithms taken from real life (e.g. taking the subway) as well as mathematics. Students already know many algorithms -- multiplication, division, etc. on which they can reflect. Some mention of a Turing machine could be made very informally. Describe the concept of a stored program computer which can manipulate its own memory, and how it embodies universal computation.

  • Reading: [I] Chapter 5.16 (8 pages).