CS 101: Computer Science: Concepts, Philosophy, and Connections

Image from US National Library of Medicine

Instructor: Prof. Jason Hartline
Lectures: Monday and Wednesday.
Sections: Friday, various times.
Online Discussion: on Piazza. (you must use the Canvas menu ‘Piazza’ to enroll in Piazza)
Project Turnin: on Canvas.

Current: Fall 2018.
Previous Quarters: Fall 2015, Fall 2016, Fall 2017.

Course Description

CS 101, a conversation (video, click to watch)

Computation is ubiquitous: DNA contains biological programs and is a part of all lifeforms, the human brain is a powerful computer, and the digital computer has revolutionized most aspects of our society. The primary goal of this course is to explore the whats, whys, and hows of computer science.

The topics covered include the theory of computation (what computers can compute), algorithms for efficient computation (what to tell a computer to compute), programming languages (how to tell a computer what to compute), artificial intelligence (how your computer can do things your brain does), computational biology (how DNA-based biological systems are like programs), computer systems (e.g., how computers work together in networks like the Internet), computer vision and graphics (how computers can gather and convey useful visual information) and human computer interaction (easy, natural ways to get what you need and want from computers).

In this course, students will learn what the computer science major is all about. Coursework will be reading and writing about computer science topics and their impact in the world. (There will be no computer programming in this course.)

This course is a required course in the Computer Science Curriculum and also satisfies the Weinberg Area III (Social and Behavioral Sciences) Distribution. The target audience of this course is freshmen and sophomores; advanced students can satisfy the computer science major’s 101 requirement by instead taking an additional breadth course.


This course surveys many topics in computer science and lectures will be given by Northwestern professors who research and teach advanced courses in these topics. Topics include: Computers and Computation, Algorithms and Tractability, Systems and Networks, Artificial Intelligence and Machine Learning, Programming Languages and Compilers, Cryptography and Security, Graphics and Vision, Human Computer Interaction, Network Science, Human Computation, and Robotics.

Lecturers include Prof. Jason Hartline, Prof. Fabian Bustamante, Simone Campanoni, Prof. Bryan Pardo, Prof. Ronen Gradwohl, Jessica Hullman, Prof. Jack Tumblin, Prof. Haoqi Zhang, and Prof. Brenna Argall.

Reading and Media

Reading and media viewing assignments will be taken from popular press and computer science journals. Sources include: The Atlantic, The Economist, WIRED, Communications of the ACM (CACM), TED Talks, XRDS: the ACM student magazine, The Huffington Post, The New York Times, and Scientific American.

Attendance, Participation, and Grading

Attendance of and participation in lectures and discussion sections is mandatory.

  • Students should contribute to classroom discussions by asking and answering questions and (when asked) providing discussion of lecture topics and reading assignments.
  • Students should participate in discussion sections by being involved in activities during the discussion section and in out-of-section followup work.
  • Students should participate in online discussion on Canvas. Possible online contributions include relating assigned reading and lecture material to current events, culture, and articles in popular media and discussion thereof.
  • Students will answer short-essay questions on Mechanical TA and conduct peer reviews of the answers of fellow students.

Grades will be weighted as follows: 40% projects, 20% participation, 40% Mechanical TA.  There are no exams.