CIS 122: Algorithms and Programming
Summer Term 2005 Syllabus

Instructor:

Dan Rao

E-Mail:

rao@cs.uoregon.edu

Time:

10:00 - 11:50, MUWH

Location:

12 Pacific / B26 Klamath (when announced)

Prerequisite:

CIS 111

Resources

Required Text:

C ++ Basics., by Todd Knowlton, South-Western Computer Education, 2003.

Supplementary:

Materials will be put on reserve in the Science Library as appropriate

CIS 122 Web Page:

http://www.cs.uoregon.edu/classes/05U/cis122/

Goals

To master the fundamental concepts of algorithmic problem solving, a.k.a. computer programming, ...
... to develop the skills of writing small computer programs, from scratch, ...
... to be able to find, understand, and correct errors in a computer program, ...
... to learn the basic elements of the C++ programming language, ...
... and the basic elements of programming styles.

Format of the Course

Packing 10 weeks' worth of material into 16 two-hour lectures would be, to say the least, a difficult way to learn programming. In my experience, programming is best learned by doing. Each class will therefore be a mix of lecture time, discussion, quizzes (if appropriate) and in-class projects, both individual and team-oriented. To support this, we will alternate between our official classroom location and the computer lab in Klamath B26, as indicated on the course calendar. Please come to each class having completed the reading assigned for that session, prepared to discuss questions, insights, or observations as they occur to you.

Homework:

There will be several take-home assignments. Each will be a mix of programming problems and/or various exercises, written and technical.

Quizzes:

Short quizzes will be given occasionally in classes. These will not be announced in advance, and will be designed not to need any studying beyond the normal class preparation. Their primary purpose is for me to gauge the progress of the class. Please note that missed quizzes cannot be made up, period. The lowest quiz score will be dropped.

Final Exam:

Per the schedule, there will be a final exam. We will discuss the format in class.

Policies

Attendance:

Because of the intensive format, attendance at every class, for the whole class, is absolutely vital. It is therefore also mandatory (see grading, below).

Late Policy:

Late submissions of the take-home assigments will be accepted, but you must make arrangements with me in advance of the due date. In almost all circumstances, the following penalty will be imposed on late work: 10% for each day late, up to 40%. That being said, do not get behind on the assignments. The pace of this course is far too intense, and you will get overwhelmed. If you are having trouble, please ask for my help, as early as possible.

Students with Disabilities:

Students with documented disabilities who may need accomodations, who have any emergency medical information an instructor should know of, or who require special arrangements in the event of an evacuation, should contact me as early as possible, no later than the first week of classes.

Academic Honesty:

All students are expected to adhere to the university policy on academic honesty. I take this very seriously: a breach of academic honor will result in a failing grade for the course, and may be subject to further college sanctions.

Regarding collaboration. This is something of a gray area, and a common source of misunderstanding. To clarify: It is common practice for real programming to be done in groups, and learning is usually more successful when it is done in community rather than in isolation. You are therefore permitted -- indeed, encouraged -- to discuss course material with each other, to evaluate, trace, debug, refute, validate, or otherwise compare each others' work, and to adjust your own work if this collaboration results in new understanding.

However, you are not free to simply mail or print identical copies of the same work, and claim that it is the work of two separate people. This is plagiarism, and is a breach of academic honor standards (it is also extremely easy to spot). While I encourage you to learn from each other, at the end of the day, the work you submit for a grade must be yours and yours alone.

I realize that it can be difficult to draw the right boundary here, but duplicate submissions are clearly on the wrong side. If you find yourself unsure whether a form of collaboration is acceptable, please ask me, in advance.

Incompletes:

A grade of Incomplete ("I") cannot be used to avoid a poor grade due to inadequate time management. However, should a genuine emergency occur, filing an Incomplete may be an appropriate response. Any request for an Incomplete must be in writing, and must obtain my permission. Supporting documents may also be required.

Grading:

Relative weights for your final grade are as follows:

  • Assignments:  .......... 40%
  • Attendance:  ........... 10%
  • Quizzes:  .............. 15%
  • Final Exam:  ........... 35%
  • Extra credit:  ......... assigned occasionally

Getting Help

If you need help with any of the material, the best way by far to get in touch with me is in person, during office hours. Any kind of class-related question is encouraged, whether it be a specific question about a homework problem, a request for encouragement and help getting started on an assignment, a point of confusion about the reading, or just plain curiousity about some of the further scientific directions that are possible. I am often available outside of office hours to answer questions, offer further explanation, or to just shoot the breeze. I am always available during posted hours. I encourage you to drop by.

Barring that, your best bet is by email. Phone calls are, frankly, lousy. You're certainly invited to call (346-4469), but it's difficult to communicate technical questions and answers clearly without reading or writing down anything. Phone messages are also much less reliable.

On the other hand, email is very often the most effective way for you to ask a question, as the effort involved in articulating what you want to ask can help clarify many things. It also makes it easier for me to give succinct replies to which you can refer later.

I won't require it, of course, but due to the omnipresence of spam, it's probably best to include a descriptive subject heading such as "CIS 122" that is guaranteed to get my attention.


Philosophical Overview: What this course is

CIS 122 is an introduction to computer programming: the "practice", the "science" and the "art". The course is intended for students who have an elementary exposure to information systems and computer programming, equivalent to the material taught in CIS 110 and 111, but it does not require any other previous programming experience. In particular, it assumes no prior experience with a traditional, non-visual programming language: this is the prior experience!

We will use the C++ programming language for this course, and so one component of the course will be a study of the main elements of the language. This will of necessity be incomplete. C++ is a very rich and complex language, and its feature set is enormous. We will, however, be able to study the "basic" programming elements, along with an elementary introduction to some classical algorithms and early concepts in object oriented programming.

More importantly, however, this course will focus on the ideas behind these elements. Many of the concepts you learn in this class will be familiar from your exposure to JavaScript in CIS 111. This is not an accident. Although you will learn programming in the C++ language, you should understand that in some sense, the language elements we study exist in every programming language that ever has or ever will be created. Like all programming languages, C++ is just a tool, and the secret to successful programming is to learn effective use of this tool.

Even broader, the ideas behind computer programming have application that goes well beyond the task of writing or reading code. We are not the only people required to perform systematic problem solving, but we are the ones who made a science out of it.



Dan Rao
Last modified: Mon Jul 11 17:50:55 PDT 2005