Logo
  • Home
  • Classes
  • Conveying Computing
  • Exams
  • Fractal Gallery
  • Guides
  • Problem Sets
  • Syllabus

Syllabus

Course Objective. The goal of this course is to teach students with no prior experience in computing to think like computer scientists.

The course is designed to enable students to appreciate, use and understand ideas at the core of computer science. This is the first course in the BA Computer Science major, but the course covers ideas that will be useful and interesting to students, whether or not they major in computer science.

Expected Background: This course is open to students with no prior background in computer science or programming.

The only background we assume is:

  • Language: reasonable proficiency in reading and writing English
  • Math: understanding of whole numbers and addition, subtraction, multiplication, divison and exponentiation.
  • Logic: familiarity with logicial and and or and not.
  • Computer Literacy: ability to use email and browse the web.

Meetings: Mondays, Wednesdays and Fridays at 11-11:50 pm in Olsson 120.

Books: The required coursebook is Introduction to Computing: Explorations in Language, Logic, and Machines by David Evans. You can download the book from http://www.computingbook.org and print it yourself or order a printed copy. A limited number of printed copies will also be available free for students in the course.

In addition to the required textbook, we will also read most of James Gleick’s The Information: A History, a Theory, a Flood.

The following books are optional, but highly recommended:

  • Structure and Interpretation of Computer Programs (”Wizard Book”), by Harold Abelson and Gerald Jay Sussman with Julie Sussman. [MIT Press] [Amazon]. This is a supplemental textbook (available free online). It covers some of the same material as the coursebook, goes into more depth on several of the topics, and includes many very interesting exercises.
  • Gödel, Escher, Bach: An Eternal Golden Braid, by Douglas R. Hofstadter (referred to as GEB) [Amazon]. This is a wonderful book that relates to the big themes in cs1120. We hope everyone in the class will read it, but it requires a lot of time and effort to read.

Course web page/blog: http://www.cs.virginia.edu/cs1120. This page is updated often and students are expected to visit it regularly (almost every day). All lectures, notes and assignments for the course will be posted on the web site. You may also want to subscribe to the RSS feeds: entries, comments. We encourage students to ask questions about the classes and assignments by posting comments on the course blog, and the course staff will regularly read and respond to questions there.

Staff

Coach: David Evans (evans@virginia.edu). My office is now Rice 507 (the new ITE building).

Assistant Coaches: Ivan Alagenchev, Jonathan Burket, Peter Chapman, Jiamin Chen, Joseph Featherston, Valerie Sapp, and Kristina Shichanin.

Help: The course staff is here to help you. Please don’t wait until too late to take advantage of the available help or ask for help. Office hours and lab hours will be scheduled based on your responses at http://whenisgood.net/cs1120 (please enter your available times now). The scheduled times will be posted on the course website soon.

Assignments

Problem Sets. There will be nine problem sets throughout the semester. The problem sets involve both written questions and programming problems. Some problem sets will be done individually, others by small groups of students, and others you will have a choice whether to work alone or with a partner. For almost all students, doing the problem sets will be the best way to learn the course material.

The expected problem set due dates and topics (which are subject to change) are:

  • Problem Set 0 (Due Sunday, 28 August) – course registration, getting started with Scheme and DrRacket
  • Problem Set 1 (Due: Monday, 5 September) – Divide-and-Conquer Problem Solving, Introduction to Procedures
  • Problem Set 2 (Due: Wednesday, 14 September) – Programming with Data
  • Problem Set 3 (Due: Friday, 23 September) – List Recursion
  • Problem Set 4 (Due: Monday, 3 October) – Lists and Procedures Review; Machines
  • Problem Set 5 (Due: Friday, 21 October) – Programming with State; Running Time Analysis
  • Problem Set 6 (Due: Monday, 31 October) – Programming with Objects
  • Problem Set 7 (Due: Wednesday, 9 November) – Implementing Languages
  • Problem Set 8 (Part I Due: Monday, 21 November, Final due Monday, 5 December)

Unless noted otherwise, problem sets are due on paper at the beginning of class (11:01am) on the day they are due. Some problem sets may also involve electronic submission.

Quizzes. There may be several short in-class or on-line quizzes throughout the semester. The dates of the quizzes may change, but are expected to be: Wednesday, September 7, Friday, 16 September, Wednesday, 28 September, Wednesday, 26 October, and Monday, 14 November.

Exams. There will be two exams during the semester and a final. All exams will be open book and open notes. All exams will be take-home unless I have any reason to believe there are any untrustworthy students in this class. Students who have already demonstrated sufficient understanding and ability by the end of the course will not be required to take the final.

  • Exam 1: out Friday, 7 October, due Wednesday, 12 October
  • Exam 2: out Monday, 21 November, due Wednesday, 30 November
  • Final: out Monday, 5 December, due Monday, 12 December (1:00pm)

Collaboration Policy

Your fellow students are your best resource. Except on Exams and Quizzes which are done individually, students are encouraged to discuss readings and assignments in study groups. Some assignments may have a specific collaboration policy, which should be explained clearly on the assignment. If this is ever unclear, ask to make sure before proceeding.

Students are also encouraged to consult outside sources, including human experts. Always list the resources you used (students, outside experts, papers, web sites) on your submission. The only resource you may not use are problem sets from previous semesters of cs200, cs150, and cs1120. It is to your advantage for the course staff to be able to reuse effective assignments from previous semesters, and important that we can trust you to not abuse those materials.

All students are required to sign the course pledge, which applies to the entire course.

Topics

Computer science is the study of information processes. Computer scientists study how to describe, predict properties of, and efficiently implement information processes. Students in the course will learn to design and create computer programs, and to reason about the information processes those programs produce.

Most of what we know about describing information processes stems from three simple ideas:

  1. You can define things in terms of themselves (recursive definitions).
  2. You can treat procedures and data as one and the same (universality).
  3. When you give something a name, it becomes more useful (abstraction).

Although these ideas are simple, they have profound implications that it takes many years to fully appreciate.

The main topics of the course include:

Language. Be able to identify the primitives, means of combination, and means of abstraction for a language; describe a language using a replacement grammar or recursive transition network; determine the set of the surface forms in a language described by a replacement grammar or recursive transition network; determine what a surface form in a language means if you are given evaluation rules for the language; determine the value of a Scheme expression following the rules of evaluation. Understand an interpreter; modify an evaluator to change the meaning of a language; explain why the difference between eagar and lazy evaluation matters.

Defining and Understanding Procedures. Be able to define and understand procedures including procedures that take procedures as parameters, procedures that produces procedures as results. Understand recursive definitions and be able to solve problems by defining a recursive procedures and reason about the process produced by evaluating an application of a recursively defined procedure.

Data, Mutation, and Objects. Understand how complex data can be constructed from simple structures, and how to define and manipulate recursive data structures. Be able to define, use, and understand procedures that manipulate lists and trees. Define and understand procedures that use mutation; draw environment diagrams; explain what environment diagrams mean; define procedures that create objects; explain a class hierarchy; define procedures that use inheritance;
explain how a method is selected given class definitions.

Analyzing Problems and Procedures. Describe problems precisely in terms of their inputs and outputs; express the amount of work a procedure requires using Θ notation; describe a problem using O, Ω, and Θ; estimate the amount of work a solution to a problem involves; classify problems into complexity classes P and NP; explain convincingly why a problem is in NP; explain what it would mean if someone developed a fast (polynomial time) procedure for an NP-Complete problem.

Modeling Computation. Explain how to model computation; understand a finite state machine description and explain what it does; understand a Turing Machine description and explain what it does; show that a computing model is (or is not) capable of modeling any mechanical computation; explain what it means for an axiomatic system to be perfect, incomplete or inconsistent; explain the essence of Gödel’s proof; determine if a problem is computable or noncomputable and provide a convincing argument why.

Evaluation

All students who put an honest effort into all the assignments and convince me they have learned to think like a computer scientist by the end of the course will receive an A as a final grade.

For students who do not succeed in convincing me they can think like a computer scientist, grades will be based on approximately the following weighting:

Problem Sets 45 (40-70)
Quizzes 5 (0-15)
Exam 1 15 (5-15)
Exam 2 15 (10-20)
Final Exam 20 (15-50)
Class Contribution 0 (0-10)

Grades are tabulated varying the weights assigned to each category in several different ways using the ranges above. In general, the weighting that is best for you is used.

Spend your energy focusing on what you are learning, instead of worrying about your grade. Although the material we cover is challenging, and the pace may seem overwhelming at times, historically all students who put effort into this class have done fine. Although not everyone will succeed, all students are expected to get an A in the course. Students who do outstanding work in the course will be considered for paid summer research positions.

Print Friendly Print Get a PDF version of this webpage PDF

Leave a Reply Cancel reply

You must be logged in to post a comment.

cs1120 | RSS | Comments RSS | Book | Using These Materials | Login | Admin | Powered by Wordpress