CS
111
(F
'13),
Fundamentals
of
Programming
I
Fall 2013
|
|
Lecture: MWF 11:15-12:10
Lab: Tu 9:05-12:10 or 2:30-5:35
Office Hours: M 3:30-, W 2-3, or ANYTIME
|
stoughj@wlu.edu, x8811 or (919) 357-0604 (txt welcm)
|
Location: Parmly 307
|
www.eg.bucknell.edu/~jvs008/teaching/CS111F13/CS111F13.html |
Course Schedule - the most important website for the course
Sakai
Overview
The two major learning objectives of this course are first, to know how
to develop algorithms to solve
problems, and second, to know how to program these algorithms
efficiently in the Python programming language. An algorithm is a means
of solving a problem in a deterministic, reproducible, "thoughtless"
fashion. While coming up with an algorithm is anything but
thoughtless, an algorithm's execution takes no more than simple
arithmetic, logic, and memory, commodities in great supply in a
computer. We will express our algorithms in English,
then
translate them into the Python programming language. During the course,
you
will learn how to use loops, conditionals, functions, data structures
such as lists and dictionaries, and
classes.
These are the building blocks which we will use to create
increasingly complex programs. This course begins the Computer Science
major.
This term we will be using Piazza for class discussion. The threaded discussion forum is catered to getting you help fast and efficiently from classmates, the TAs, and myself. Rather than emailing questions to me or other students, I encourage you to post your questions on Piazza.
Find our class page at: https://piazza.com/wlu/fall2013/csci111/home.
Time Commitment
During the course of CS 111, you will be learning not only a new
paradigm for problem solving, but also a language for expressing those
solutions.
This can be a time-consuming process. Expect to spend 10-15 hours per
week outside of class in this course. If you do not have this
kind of time available to work
on CS 111, you
may want to wait and take it in a later term.
Textbook (required)
Ken Lambert, Fundamentals of Python:
First Programs.
Available at the bookstore or online.
The
book
website,
including
example
programs,
is
here.
Attendance, Grading, Late Assignments
- Attendance is required.
- Grading breakdown: Exams 40% (2
x
10,
1
x
20),
Assignments 40%,
Quizes 10%, Attendance and Participation 10%.
- An assignment is late if I do not have the submission when I
start grading. A late assignment is worth half the points up to one week after
I grade, zero points after that.
This scale may be delayed given the severity of your
circumstances and my being
informed of them in a timely manner.
- I will defer to
the Counseling Center (see here).
- If you have an athletic event and will not be able to make a
deadline, you should tell me within a day of an assignment being
posted.
- Accomodations for qualified disabilities requires written
notfication in conjunction with Student Academic
Support (see here or call
458-8754).
Assistance from others, group work,
etc.
Computer Science is a difficult subject to learn on your own (like many
others). Talking through problems with mentors and peers can be
an exceptional learning tool. However, this sort of collaboration
can also be quite dangerous, as you may be underprepared to be tested
on your own. Thus, here are my guidelines for appropriate
collaboration, in order to better help you learn. Conduct in
gross violation of these guidelines will be considered a breach of
trust. In the below, an implementation
refers to a detailed explanation (such as code) of the programming
structures and object interactions for solving a problem.
- Your only sources for this course should be the book, links I
provide to you through the course schedule and email, other students in
this course with you, and
me.
- You are not to seek assistance
from students who have previously taken this course, with the exception
of the TAs for the course and official tutors assigned through Academic
Peer Tutoring.
- At the end of the term, YOU will
be someone who has previously taken this course. In the future,
please do not provide assistance to future students (unless through the
exceptions provided above), and encourage such students
to seek appropriate help.
- Do not use other online materials. It is likely that coded
solutions to many of the homeworks are readily available on the
web. However, this material obviously constitutes implementation
details.
- I encourage you to discuss with each other broad solutions to
problems on assignments. However, when you sit down to code your
solution, it should be your work. Please acknowledge aid received
from other students. It will have no effect on my grading, and it
is the honorable thing to do.
- I have found that in the vast majority of
non-typo cases, the mental exercise of running sample data through your
code illuminates the issue and leads to better understanding on your
part. Ignoring this exercise for convenience will hurt you. I
will help you with this exercise.
- After completing the assignment, feel free to discuss any aspects
of the assignment, including implementation details with others who
have also completed the assignment.