CSC173: Computation and Formal Systems
Spring 2018

General Information

Instructor: Prof. George Ferguson <>

Office: Wegmans Hall 2103 (see instructor website for office hours)

Lectures: Mon & Wed 1150-1305 in Dewey 1-101

Web: BlackBoard and

Teaching Assistants

Xiaoya Wang <>
Christopher Kjellqvist <>
Alex Benishek <>
Gayeon Lee <>
Edward Newton <>
David Anuta <>
Lilian Ludford <>
Ab Salazar <>
Yeonwoo Lee <>
Jacquelyn Moreno <>
Ian Pope <>
Wen Zhou <>

TA Study Sessions:

Course Goals

This course is an introduction to some of the most important formal models of computation, and their application to real-world computing problems. We learn the formal models, we learn the techniques for analyzing and understanding formal models, we implement something related to the formal models, and we learn how theory and practice go hand in hand in Computer Science.

Complete details are available in the Course Calendar.

We will use the C programming language for all projects in this course. We will not spend much time learning C specifically. You will learn to adapt what you know from earlier Computer Science courses to programming in C if you don't know it already. The following guide may be helpful: C for Java Programmers (PDF).


CSC172, MTH150. No exceptions.

Textbook & Resources

Aho and Ullman, Foundations of Computer Science.

This book is excellent and also out of print. This is good news for you, since that means that it is legally available free on the web:

Additional readings and resources will be assigned as needed and posted to BlackBoard.

Course Work

There is homework for every class. Homework will NOT be graded. We will go over the previous homework at the start of each class and you can go over it with the TAs in study sessions.

We do not have official CETL workshops, but the TAs hold regular study sessions. Many students find these VERY HELPFUL. Time and place are listed above.

There is a project for every unit. The projects are designed to deepen your understanding of the material in preparation for the unit exam. You are encouraged to start (and finish) projects EARLY. There is no point in doing them at the last minute.

There are FIVE (5) exams, one for each unit of the class. These will take place during class time. Note that the exam for the final unit may be combined with the final exam.

There is a final exam during the final exam period, as scheduled by the Registrar. The final exam will consist of five sections, one for each unit.

This course does NOT permit additional work for extra credit under any circumstances.


Each unit will be equally weighted in the final grade.

Grade Breakdown:

In other words, each unit is worth 1/5 (20%) of the final grade: 10% for the unit exam, 5% for the project, and 5% from the final exam.

Letter grades will follow the Official University of Rochester Grading Scheme. Note that the University scheme puts average somewhere between C and B. The following table is an estimate of how the numeric grades will map onto the letter grades (subject to change):

A: Excellent >=90%
B: Above Average >=80%
C: Minimum Satisfactory Grade >=70%
D: Minimum Passing Grade >=60%
E: Fail <60%

All appeals of exam or project grades must be made within ONE WEEK of the grade being posted.

Course Policies

We hope that you will want to attend class (lecture), but attendance is NOT required other than for exams. If you choose not to attend, you may miss important announcements or information about the course.

Computer crashes, malfunctions, and catastrophic loss of files are NOT valid excuses for not submitting work on time. CSC173 students are Computer Scientists. You should know how to deal with this by now. Backup your files regularly to at least one external drive and/or cloud storage. You can always complete your assignments using IT Center computers.

Network connectivity problems are also NOT an excuse for not submitting work to BlackBoard on time. CSC173 students are all familiar with BlackBoard, for better or worse. Upload early just in case.

Students with an appropriate excuse for missing any exam or project deadline must make arrangements IN ADVANCE.

Students with an accommodation for any aspect of the course must make arrangements through the Center for Excellence in Teaching and Learning (CETL) IN ADVANCE. Then, as instructed by CETL, contact the instructor to confirm your arrangements. Do not leave this until the last minute either.

Students who are unable to attend or complete any part of the course due to illness should contact the instructor AS SOON AS POSSIBLE. Please note that the University Health Service (UHS) does not provide retroactive excuses for missed classes. Students who are seen at UHS for an illness or injury can ask for documentation that verifies the date of their visit(s) to UHS without mention of the reason for the visit. Students with extended or severe illness should contact the College Center for Advising Services (CCAS) for advice and assistance.

Academic Honesty and Collaboration

All assignments and activities associated with this course must be performed in accordance with the University of Rochester's Academic Honesty Policy. More information is available at:

You will learn the most if you do all the work in this course ON YOUR OWN.

Collaboration on projects is permitted, subject to the following requirements:

Policy on Electronics

Electronics (laptops, phones, etc.) are NOT permitted in class.

Research shows that students who take notes using pen and paper retain significantly more of the information. Typing your handwritten notes into the computer after class improves understanding and retention even more.

If you have a CETL-approved accomodation that requires the use of a laptop or other electronic device in class, you MUST make arrangements with the instructor.

Please note Section V.7 of the College's Academic Honesty policy regarding Unauthorized Recording, Distribution or Publication of Course-Related Materials.