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 and minors. A deeper coverage of these topics will be presented in CS 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 various types of programming applications such as numerical computation, text processing, graphics, image processing, and networking
- systematic techniques for testing and debugging programs
Structure
Classroom work will consist of lecture, discussion, and lab
experimentation. Written work will consist of several programming
projects and exams.
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
Instructional Staff
Sara Sprenkle
Office: Parmly Hall 410
Office Hours: Wednesday 3:30-4:30 p.m., Thursday 12: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)
TA Contact Information
Course Information
CS 111, Section
Lecture: MWF 2:30 p.m. - 3:25 p.m. in Sci Add G14
Lab: R 2:30 p.m. - 5:35 p.m. in Parmly 405
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. 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.
You will get the most out of this class if you actively
participate in the class by asking and answering questions.
You are expected to 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!
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 be available during office hours and by
appointment. I will do my best to respond to questions via email
within 24 hours.
Honor System
Programming projects, homework exercises, and exams should be written
individually. The standard rules for citing the work of others apply
to all your written work.
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 when appropriate
and by being respectful of other students.
You are permitted three "sick days" for minor illnesses
and one "personal day" which you may use for any reason (e.g.,
family occasion). No documentation is needed or requested for
these absences. Unexcused absences beyond these will result
in deduction in your participation grade. Excused university
absences (e.g., for intercollegiate athletics, documented by a
note from a faculty or staff member) do not count towards your
sick days or personal days.
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 50% of the total value for that assignment. 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.
Grading
Grades for the course will be computed as follows:
- Programming projects (45% of the grade)
- Two hourly exams (30% of the grade)
- A comprehensive final exam (20% of the grade)
- Participation and attendance (5% of the grade)
Programming Style
Programming is not a dry mechanical process but an art form. Well-written code has an aesthetic appeal while poor form can make other programmers and instructors cringe. Programming assignments will be graded based on correctness and style. Good programming practices usually include many of the following principles:
- A comment at the top of the program that includes
- Program authors
- Date or Dates
- A brief description of what the program does
- Concise comments that summarize major sections of your code
- Meaningful variable and function names
- Well organized code
- White space or comments to improve legibility
- Avoidance of large blocks of copy-pasted code