CIS 122 Algorithms and Programs in C++
Syllabus, Fall 2005
CRN 12212
MW 14-15:20, 248 GER

Instructor: Michael Hennessy
michaelh@cs.uoregon.edu, 145 Deschutes Hall, 346-3487.
Instructor and GTF Office Hours.

Course Description

What is the central core of the subject [computer science]? What is it that distinguishes it from the separate subjects with which it is related? What is the linking thread which gathers these disparate branches into a single discipline. My answer to these questions is simple -it is the art of programming a computer. It is the art of designing efficient and elegant methods of getting a computer to solve problems, theoretical or practical, small or large, simple or complex. It is the art of translating this design into an effective and accurate computer program. - C.A.R. Hoare

Computer Science is no more about computers than astronomy is about telescopes.- E. Dijkstra

An algorithm is a step-by-step problem-solving procedure. A program is a series of instructions that a computer can interpret and execute. Computer Science is the study of algorithms and programs, including principles, practices, and engineering. Algorithms are, therefore, a unifying theme for Computer Sciene, just as energy is a unifying theme for the study of Physics.

CIS 122 is a second course in Information Technolgy (IT) and applies the principles of algorithmic problem-solving. You will learn "How to Solve it by Computer" by writing algorithms and programs in an object-oriented language (C++), in a Unix environment. CIS 122 builds upon the core IT concepts presented in CIS 110.

You will need your username and password for your gladstone account in your week 1 lab. See MicroHelp (151 McK) for questions about your account.

The course is intended for students with no prior programming experience in any language. Prerequisites: Mth 111, CIS 110.

For students who did not take CIS 110 at the University of Oregon, please see CIS 110 Course-Equivalency for CIS 122, below.

122 labs start week 1 and meet in the PC-lab, 101 Mckenzie. You can also work in 013 Kla, 026 Kla, the ITCs, and any other microlab on campus, as well as at home (if you have a computer with web access; pick up the Duckware CD at 151 Mck and install the network applications including SSH).

Course Objectives

Upon completion of this course, a student will:

  1. Understand the development and philosophy of the C++ language
  2. Design and develop programs in the C++ language using procedural programming techniques
  3. Understand the use of C++ as an object-oriented programming language
  4. Create, test, and debug C++ applications on gladstone using the Unix development environment

Required Text

No purchase of a text is required. Online materials will be provided as we progress through the course.

C/C++ Development Environments

The 122 labs meet once a week in the PC-lab. There you will learn how to use the Unix/C++/Emacs environment on gladstone. You must have an active gladstone account and a working username and password before you go to your first 122 lab in week

1. Note that the same development environment can be accessed from your home computer using modem, DSL, etc., so you can work on your 122 projects from home.

Course Requirements

Programming Projects ...  50%
Quizzes ................  50%
Note that the quizzes replace both the midterm and the final exam. Dates of quizzes are on the 122 home page; mark them on your calendar and set your alarms-- a missed quiz is zero points.

The formula to compute your final percentage for the course:

pct = 100 * (0.5 * YourProjPts/TtlProjPts + 0.5 * YourQuizPts/TtlQuizPts)

Keep backup copies of all your projects on gladstone until your final grade is completely resolved. This can make the difference between passing and failing the course.

Quiz dates are on the 122 home page. Please mark your calendar now, as a missed quiz is a zero.

Things You Need to Know

CIS 110 Equivalency for 122

You have satisfied the 110 pre-req if you have taken a course (or courses) in which you studied all of the following topics covered in CIS 110.
  1. Unix for Web Development: basic Unix commands, as covered in sections 1-6 of this UNIX Tutorial for Beginners from the University of Surrey, UK. (ls, cd, rm, mv, mkdir, chmod, ...)
  2. Information Technology (IT) Concepts: hardware, software, data representation, networks and protocols (TCP/IP, HTTP).
  3. Office Applications: word processor, spreadsheet.

Note: CIT minors must petition to waive the CIS 110 requirement. See CIS/CIT undergraduate coordinator Cheri Smith, 120 Deschutes, for details.