CSCI 150 - Foundations of Computer Science
Fall 2011
Course Overview:
This course is an introduction to computational problem solving using the
Python programming language. We will study how to apply basic programming
constructs (including variables, loops, strings, lists, conditionals,
functions, modules, classes, and objects) in order to solve problems using
a computer.
At the end of the course, you will be expected to be able to:
- Read, understand and execute a computer program written in Python.
- Read a set of requirements for a computer program in English,
and write a short Python program (100 lines or less) that corresponds
to them.
- Test a Python program and identify and fix programming errors.
- Identify some errors in a Python program without testing it.
- Without using a computer, write a very short Python code
fragment (10 lines or less) that correctly implements a set of
requirements.
- Understand and apply variables, loops, strings, lists, conditionals, and functions.
- Write programs to perform mathematical calculations.
- Understand the concept of a module.
- Write a python program that is separated into at least two modules.
- Understand the concepts of class and object, and distinguish between them.
- Write a Python program including objects of at least one student-designed class.
- Write and understand appropriate comments in a Python program.
- Understand the concept of an algorithm and compare the efficiency of
different algorithms for a simple task.
Expectations:
Writing computer programs is an extremely important component of this course.
Programming can be very challenging and time-consuming, so be sure to start
writing your programs as soon as possible after they are assigned. You will be
expected to write short computer programs or short sections of computer
programs on your tests, so you are encouraged to work additional problems
as necessary to master the material.
DO NOT MISS CLASS! During class, I often discuss important
points that may not be found in the textbook. I will also discuss homework
assignments when they are assigned. If you have to miss class for a
very good reason, please contact me at least one week in advance. If
you are ill, please contact me as soon as possible.
Do not hesitate to seek help from the instructor if you are having difficulty
with an assignment or preparing for a test. Visit the instructor during
office hours or send email using the address on his web page. Furthermore,
do not hesitate to ask questions during class or to seek help from classmates.
Instructor: Dr. Gabriel Ferrer
M.C. Reynolds 312
Web:
http://ozark.hendrix.edu/~ferrer/
Office Hours:
MF: 1:30-3:00 pm
TWR: 1:30-2:30 pm
Feel free to make an appointment outside these times, or to stop by whenever
my door is open. Also, these hours are subject to change; the most current
schedule will always be posted outside my door.
Class Web Page:
http://ozark.hendrix.edu/~ferrer/courses/150/
Lecture Time:
Section 1: C3 (MWF 10:10-11:00, R 12:10-1:00)
Section 2: C4 (MTWF 11:10-12:00)
Class Location:
Section 1: MCReynolds 315 (MF), MCReynolds 314 (WR)
Section 2: MCReynolds 317 (MF), MCReynolds 314 (TW)
Lectures will be on Mondays and Fridays, with computer lab work on the
other days. Tests may be given on Mondays, Wednesdays, or Fridays.
Final Exam Period:
Section 1: Friday, December 9, 8:30-11:30 am
Section 2: Monday, December 12, 8:30-11:30 am
Required Textbook:
Exploring Python, by Timothy A. Budd, McGraw/Hill, 2010.
We will use this book extensively this semester. The majority of our
homework problems will be assigned from the book, and its text is a valuable
supplement to the lectures.
Recommended Equipment:
I strongly recommend the use of a USB drive for storing your programs.
The hard drives on the lab computers will have their memories wiped daily.
Grading Criteria:
Homework, including programming projects: 30%
Final project: 10%
In-class tests: 25%
Final Exam: 30%
Class participation: 5%
Each assignment will be assigned a letter grade. Each
letter grade has associated with it a percentage grade as follows:
Letter grade | Percentage |
A | 95 |
B | 85 |
C | 75 |
D | 65 |
F | 50 |
Missing grades will be scored zero. Any grade can have a "+" or "-" attached
to it, adding/subtracting 4 points to/from the grade. A grade of "A+" will
only be assigned to work that in some way impresses me above and beyond the
requirements for the assignment.
For each category above, the total points earned will be divided
by the total points possible to yield a percentage. These percentages will
be weighted as given above. A final average of at least 90 earns an A;
80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.
Homework:
Homework assignments will consist largely of problem sets assigned from the
textbook. Later in the semester, some assignments will be standalone projects.
In all cases, the grading criteria for the assignment will be stated when
it is assigned. All assignments will be posted to the course web site.
Additional problems will also be assigned from the book from time to time.
Although these additional problems will not be graded, you will be responsible
for the concepts they relate during tests.
All homework will be submitted using the
Sauron submission system. Assignments will typically be due every Friday.
Honor Policy:
You are responsible for writing all of the code
for your assignments by yourself. You may incorporate parts of
programs handed out in class or posted on the course web page as part of
your solutions. You may not incorporate code obtained from any other source.
You are encouraged to discuss your assignments with other students. You
are not to copy code from another student, past or current, into your solution.
In general, use common sense in tandem with these guidelines. Feel free to
speak to the instructor about any situation that seems ambiguous to you.
Revisions:
After assignments are returned, you are welcome to revise and resubmit your
work. I will grade anew each submitted revision, and average the original
and revised grades together to produce a new grade for that assignment.
Revisions may be submitted anytime until the start of the final exam period.
No late work will be accepted. Any work not submitted on time
is a zero. However, you may submit a solution after the deadline to qualify
under the revision policy. In effect, this means that late work can
earn up to half credit.
Final Project:
Towards the end of the semester, you will design and implement a final project.
The purpose of the final project is to consolidate your skills in the
implementation of a non-trivial program. Project details will be forthcoming
at the appropriate time.
Working in Teams:
Each student is welcome to collaborate with one other student in completing
homework assignments. Each such team should submit exactly one solution,
for which they will receive the same grade. Given the class enrollment,
whenever specified by the instructor working in teams may be compulsory.
I reserve the right to change this policy,
individually or collectively, at any time.
Illness and other excuses:
If you are ill and miss any deadlines or tests, you must provide me with
documentation of the illness from the school nurse or another health care
professional as soon as possible. If you miss any homework or tests due
to approved Hendrix activities, you must provide written documentation
from the sponsor of the activity one week beforehand.