Course Overview
Welcome to CS 111, Fundamentals of Programming I! In this course, you'll do more than just computer programming: you'll learn the fundamental problem-solving ideas in computer science.
This course is appropriate for all students who want to learn how to write computer programs and think like computer scientists. It is the usual first course for computer science majors. A deeper coverage of these topics will be presented in CSCI 112.
Course Description
This course will cover
- the design and implementation of algorithms for solving problems
- an introduction to syntax, semantics, and pragmatics of the Python programming language, an interpreted language known for its ease of use
- a survey of programming applications such as numerical computation, text processing, graphics, image processing, and networking
- an introduction to the use of the Linux operating system
- systematic techniques for testing and debugging programs
Structure
Classroom work will consist of lecture, discussion, and lab
experimentation. Written work will consist of weekly programming
projects, several exams, and weekly analyses of articles about
CS-related issues.
Lecture: MWF 1:25 p.m. - 2:20 p.m. in Parmly 307
Lab: T 2:30 p.m. - 5:35 p.m. in Parmly 405
Objectives
After taking this course, you should be able to
- Apply your problem-solving skills and knowledge of data structures to a wide variety of computational problems
- Understand the fundamentals of the syntax and semantics of Python programming language
- Describe a program's functionality in plain English, typically using comments
- Expose, diagnose, and fix errors in a program, using systematic testing and debugging techniques
- Understand the fundamentals of using the UNIX operating system
- Understand the design issues of computer science, including the tradeoffs in efficiency, as well as larger social and political issues and impacts, such as the digital divide, green computing, ethics and policies.
Instructional Staff
Sara Sprenkle
Office: Parmly Hall 410
Office Hours: Wednesday 2:30-4:30 p.m., Thursday 1:30-3:30 p.m., or by appointment
E-mail Address:
Phone Number: (540) 458-8309 (it is better to email me than to call)
Student Assistants: Will Richardson '11 and Camille Cobb '12
Course Information
Optional Textbooks
- Python Programming: An Introduction to Computer Science
- Fundamentals of Python: From First Programs Through Data Structures - K. Lambert
Course Policies
Student Responsibilities
- It is very important that you attend lectures (see Grading
below). There will be considerable information given in class that
is not available elsewhere.
Attendance in lab is required. We schedule the labs for your benefit so that you can practice with three people available for assistance. If you do not attend or leave early, you will only get limited help. Therefore, you should make the most of lab time. Family and medical emergencies and conflicts with University-recognized extra-curricular activities are the only reasons to request that work be rescheduled. If you must miss a lab for some reason, make arrangements for a make-up session in advance.
- You are expected to arrive at labs and lectures promptly.
- Please turn off cellphones.
- Actively participate in the class by asking and answering questions.
- Check your W & L email frequently and check this web page and the schedule for new information.
- Throughout this class (and life in general), keep in mind a cowboy's wisdom: "Good judgement comes from experience." You may ask, "How do I get experience?" Bad judgement works every time. My point? Don't be afraid to make mistakes in this class, but make sure you learn from them!
- The schedule, including important dates, is posted at the beginning of the semester. You should plan accordingly. If there are acceptable conflicts, tell me at the beginning of the semester and then remind me about a week in advance. This is especially important for exams. If you cannot make an exam, you must arrange a time prior to the scheduled exam to take the exam. If you miss the exam period, you will receive a 0 for the exam. If you are ill, you must email me with a phone number where you can be reached and speak with me in person. An email informing me that you are not taking the quiz or test is NOT acceptable. In fairness to your peers taking the exam early or at the scheduled time, you must provide a note from the health center.
Instructor Responsibilities
I will try to
make this course and its material as exciting for you as it is for
me. I will be respectful of student questions and misunderstandings.
I will give prompt, constructive feedback from assignments. I will
be available during office hours and by appointment. I will do my
best to respond to questions via email within 24 hours.
Honor System
You may discuss programming assignments informally with other students.
However, sharing a solution, in the form of experimental results or the
design or implementation of a program, is an honor violation. Students
should know where to draw the line between getting legitimate outside
assistance with course material and outright cheating. Students who obtain
too much assistance without learning the material ultimately cheat
themselves the most. If you have any uncertainty about what this means,
consult with me before you collaborate. All written assignments should
be done individually.
Participation and attendance
To receive full
credit for class participation and attendance, you must have less than
three unexcused absences from lecture and lab and you must be actively
engaged in the classroom by answering and asking questions each class when
appropriate and by being respectful of other students. The average grade
for participation is a B.
The schedule, including important dates, is posted at the beginning of the semester. You should plan accordingly. If there are acceptable conflicts, tell me at the beginning of the semester and then remind me about a week in advance.
General grading policies
Programs
turned in with syntax errors will receive no credit. "Roll
back" your program (often by commenting out the new trouble
spots) into a state where it does not have syntax errors.
Late policy
All assigned work is due
on the date specified. Any assignment turned in after the due
date/time but on the same day will be penalized 10%. Any
assignment turned in after the day on which it is due will be
penalized an additional 10% for each school day it is late. No
assignment will be accepted that is more than three school
days late. If you turn an assignment in late, you must
indicate this on the top of the paper.
Extensions are rarely granted. You have three hours in lab to complete the assignment with help from the instructor and student assistants, plus a few days to finish up if you need more time. If you leave lab before the period is over, you will not be granted an extension for any reason.
How to Succeed in This Course
- come to every class prepared (bring questions!)
- actively participate in class by asking and answering questions
- practice, practice, practice!
- do all the assignments and turn them in on time
- if you start to get behind, see me in office hours right away
Grading
Grades for the course will be computed as follows:
- (38%) Programming projects
- (30%) Two hourly exams
- (20%) A comprehensive final exam
- (7%) Writeups and discussions of CS-related issues
- (5%) Participation and attendance