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:
- Talk to me I can't help you if you don't talk to me. Ask questions in class, send me emails, stop by my office hours. I welcome any and all questions. I'm here to help you learn.
- Don't fall behind Get the help you need before you need it. Computer Science builds on itself pretty quickly, so be sure to get help before you're sure you need it. I'm here to help you succeed, and it's a lot harder to help you understand the current week's homework if you haven't fully understood last week's assignment.
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!