CS
112, Fundamentals of Programming II
Fall 2009
|
|
MWF 10:10-11:05, T 9:05-12:10
Office Hours: M 4-5, T 4-5, F 1-3
|
stoughj@wlu.edu, x8811 or (919) 357-0604 (txt welcm)
|
Parmly 413/404
|
www.cs.wlu.edu/~stough/teaching/CS112F09/CS112F09.html |
Sakai
login page.
Course Schedule
Overview
The major objective of this course is to provide you with tools for
advanced programming. Abstract
data types and efficient data structures, including queues, stacks, and
trees. Analysis of algorithms,
including worst-case, average-case, and amortized analysis. Extensive
practice in implementing/manipulating these data structures
in Python. This course is a prerequisite for most higher level courses
in Computer Science.
Time Commitment
During the course of CS 112, you will implement and utilize advanced
data structures.
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 112, you
may want to wait and take it in a later term.
Textbook (required)
Ken Lambert, Fundamentals of Python,
ISBN: 1-4239-0218-8, available through amazon.
Attendance, Grading, Late Assignments
- Attendance is required.
- Grading breakdown: Exams 50% (2
x 10, 1 x 30), Assignments 40%,
Attendance and Participation 10%.
- Late Assignments lose 10, 15,
25, 25, 25% for each additional day late (no credit on the
fifth day). 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 Dean Ikeda of Student Academic
Support (see here).
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 schedule, others in the course with you, and
me.
- 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.
- Do not compare code or implementation details with other
students before you have completed and submitted your work.
Discuss such detailed information only with me--I
am happy to discuss details and look at your code, and I will not count
it against you at all. 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.