CIS 122
Syllabus

About the Class

Precious few disciplines are not touched by computers these days, and just about everyone would benefit from knowing how to program. There are tons of problems where knowing how to program can make an otherwise challenging problem easy. Whether it's processing large amounts of DNA data from a Biology experiment, getting an Excel spreadsheet to precisely track your expenditures, or learning how to tell the expensive piece of software your Boss has made you use to solve all your problems, knowledge of programming is becoming a great asset.

There are two deeply intertwined goals of this class. That you learn how to program, and that you learn problem solving skills. We'll be using the Python programming language, but the concepts and skills you'll learn will apply to just about any programming or problem solving endeavor.

Pre-requisites

Math 111 is listed as a pre-requisite and it's good if you've taken it, but the class should be accessible to anyone who is familiar with computers.

What we'll learn

We'll be learning the fundamentals of writing real computer programs that do real things. The Python programming language is easy to pick up and comes with a large and industrial-strength standard library. You'll also be learning problem solving skills. We'll be strengthening your mind and giving your thoughts the structure necessary to tackle seemingly impossible problems.

Workload

The University's definition of one credit hour:

1 credit. Represents approximately three hours of the student's time each week for one term in a lower-division undergraduate course. This frequently means one hour in the lecture hall or laboratory in addition to two hours spent in outside preparation. Reader's Guide to the UO Catalog

This means that for an 8-week 4-credit course, you are expected to put in about 2 hours per day outside of lecture on this class.

My hope is that most of you won't require nearly this amount of time outside of class. But, some people do find this material harder than others so you should be prepared to spend the time on this class if it comes to it.

How to succeed:

Grading

Programming is best learned by doing. Each class will therefore be a mix of lecture, discussion, and in-class projects. Please come to each class having read the assigned reading, prepared to discuss and ask questions.

Your grade will be composed of the following elements:

Midterm        15%
Final          25%
Projects       40%
Final Project  20%

The Midterm and Final will be in-class tests. For timing, see the Schedule.

There will be roughly 5 programming projects with a final project of your choosing. Programming projects will involve the solving of several different (though maybe related) programming problems using Python. The final project will involve major work solving a self-chosen problem. More info on it will be given when it's assigned.

Attendance

Attendance is not mandatory, though it is recommended. Highly recommended.

Late Work

Late submission of projects will be accepted, but you must make arrangements with me before the due date. In almost all circumstances, the following penalty will be imposed: 10% for each day late, up to 40%. That said, don't fall behind. If you are having trouble, let me know as soon as possible.

Academic Honesty

You are expected to adhere to university's policy on academic honesty. I take academic honesty very seriously; a breach of academic honor will result in anywhere from a failing grade for the assignment to a failing grade for the course and may include further punishment by the college.

Group Work

It is common for real programming to be done in groups, and learning to program is often more successful when done in groups. You are encouraged to discuss problems with each other, to argue, to compare, to debug, and to adjust your work as a result. However, you are not free to simply copy someone's work and claim it as your own. This is plagiarism. Believe me, it is really easy to spot the two people who used the exact same variable names and solved the problem in the same way.

It is simple to avoid problems of this nature. Only submit work which you have personally created. If you have questions about anything with regards to academic honesty, do not hesitate to ask me in advance.

Incompletes

A grade of Incomplete ("I") cannot be used to avoid a poor grade due to poor time management. However, should an emergency occur, we can work something out. Come see me.

Feedback

I'm open to any kind of feedback or criticism you'd like to share with me. I promise I won't let it affect your grade, but if you're nervous about it, you can leave it anonymously in my mailbox. Otherwise, send me email, drop by my office hours, or catch me after class. I want to be the best teacher I can be, and that means knowing what's working and what's not, so tell me!