Course Overview
Welcome to CSCI 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 2:30 p.m. - 3:25 p.m. in Science Addition G14
Lab: T 2:30 p.m. - 5:30 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 1-2 p.m., 3:35-4:35 p.m., Thursday 2:30-4:30 p.m., or by
appointment
E-mail Address:
How to Email a
Professor
Phone Number: (540) 458-8309 (it is better to email me than to call)
Student Assistants:
- Alex Cantrell '19
- Ethiopia Getachew '19
- Jake Rosen '18
- Sarah Troise '19
Course Information
Textbook
- How to Think Like a Computer Scientist: Interactive Edition - requires a login. While the book and registration is free, please consider donating $15 to help them with their costs of hosting and development.
- Optional: Python Programming: An Introduction to Computer Science—2nd Edition John Zelle, ISBN: 9781590282410
- Optional: Fundamentals of Python: First Programs - K. Lambert
Course Policies
Student Responsibilities
- 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.
- Arrive at lectures and labs promptly.
- 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 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.
You are permitted three sick/personal days for minor illnesses or any other 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
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.
You are responsible for keeping track of your grades and calculating your grade.
Academic Accommodations
Washington and Lee University makes reasonable academic accommodations
for qualified students with disabilities. All undergraduate
accommodations must be approved through the Office of the Dean of the
College. Students requesting accommodations for this course should
present an official accommodation letter within the first two weeks of
the (fall or winter) term and schedule a meeting outside of class time
to discuss accommodations. It is the student’s responsibility to
present this paperwork in a timely fashion and to follow up about
accommodation arrangements. Accommodations for test-taking should be
arranged with the professor at least a week before the date of the
test or exam.
Final Exam
The final exam for this course will be given during the final exam
week. You can take this exam during any of the regularly scheduled
exam periods that week. You must supply an exam envelope to the
instructor or the department administrative assistant no later than
5 p.m. on the last day of class. You must specify a provisional day
and time on the envelope, which you are free to change on the
clipboard provided outside the door of Parmly 407 any time that
week. Email or phone requests to reschedule will not be
accepted.
The exam will be given in Parmly 405, and you should arrive promptly before the appointed time. If you are more than 15 minutes late, you will have to reschedule your exam. If you are more than 15 minutes late to the last exam period on Friday afternoon, you will receive a grade of 0 on your exam.
Students who have approved academic accommodations must make arrangements to use those accommodations directly with the instructor no later than the last day of class. Students approved for extra time will receive that time at the tail end of the morning exam period or before the beginning of the afternoon exam period (for example, ending at 1:30 PM for a morning exam or beginning at 12:30 PM for an afternoon exam). Students approved for a low-distraction testing location should reserve that space during the last week of classes (following instructions distributed by Dean Price (sophomores, juniors or seniors) or Director of Disability Resources Lauren Kozak (first-years).
How to Succeed in This Course
- come to every class prepared (bring questions!)
- actively participate in class by asking and answering questions
- do all the assignments and turn them in on time
- bring your handouts and notes to lab; review these notes before coming to lab
- 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