CS 112 Syllabus
Course Info:
Time: MWF - 11:35-1:20
Place: HRN 235
Professor: Chris Brooks
Office: Harney 541
Phone: 422-5221
email: cbrooks (at) cs.usfca.edu
Office Hours: Tues 4:30-5:30, Wed 1:30-2:30 or by appointment
Course Objectives:
- Continued study of Java, including
- Fundamental data structures such as lists and trees
- Complex data composition
- Java library collections classes
- Inheritance, polymorphism, information hiding
- Beneath the hood view of program execution and the run-time environment.
- Software engineering principles, including top-down design,
bottom-up implementation, and testing.
- Introduction to interactive development environments and
debugging tools.
- Introduction to C language programming, including pointers and
memory management.
Grade Breakdown
The class consists of the following graded components:
- 5 programming projects: 40%
- 2 midterms and a final: 40%
- In-class lab work 10%
- Class participation 10%
Grading
I'll give you a number of labs to work on in class throughout the
course of the semester; these will typically be due at the end of the
week and will be graded as 'done' or 'not done.'
You'll have two midterms and a final, approximately one every five
weeks.
Class participation is essential; attendance is a required portion of
the class. To get an 'A' in participation, you must not only come to
class on time and prepared, but also participate in class discussion
when appropriate.
You will also receive 5 programming assignments to be completed over
the course of the semester. You'll have 2-3 weeks to do each of
them. You wll be required to submit both electronic and paper versions
of your code. Late programs that are submitted within 24 hours after
the due date can earn 50% credit. Programs submitted more than 24
hours late will receive no credit.
Interactive grading will be used to evaluate your programs. Your
interactive grading session will occur in class on the due date, or a
grading session will be scheduled for a later time/date. At the
session, the grader will download your submitted program and evaluate
it. You may not submit or show the grader a new version of the
program. Bring a hardcopy of your program with you to the grading
session. This hardcopy must be exactly the same as the submitted
program.
Attendance
Attendance is mandatory. That includes showing up on time at the start
of class. If you need to miss a class for a valid reason, you need to
talk with me IN ADVANCE. Lack of attendance will lead to a drop in your
grade, or your being dropped from the class altogether.
Text
John Lewis and William Loftus,
Java
Software Solutions: Foundations of Program Design, Addison Wesley, 2004.
Kernighan and Ritchie,
The C Programming Language, 2nd Edition, Prentice Hall,1988
Collaboration
In general, I expect
students to behave responsibly and do their own work. I'm willing to
assume this is the case until proven wrong. More specifically, it is
OK to talk with each other about the general parameters or approach of
the assignment. It is NOT OK to share source code, to do part of an
assignment for another person, or to directly copy another person't
work. If you are unsure as to whether something is considered fair
game or not, please ask me and we can discuss it.
A few examples:
"On question 4, are we supposed to use an array or a linked list?"
This is fine; it's a clarification of the assignment. Feel
free to talk about this sort of thing with your classmates.
"I don't understand how linked lists work! Can you explain it to me?"
Also fine; you're talking about the course material generally; I think
students should help each other with this sort of thing - you're great
resources for each other.
"Question 3 is really hard. How did you do it?" Now we're getting into
a gray area. If you're talking in generalities here ("Well, you have
to process the input and break it into tokens.") that's fine; you're
not telling the other person exactly how to do the assignment, you're
just discussing approaches. If you're talking specifics ("Here's the
code for parsing an input stream.") then we're moving into
unacceptable territory. The question to ask is: does the person I'm
talking to still need to think for themselves in order to solve the
problem, or have I just given them the entire answer? I strongly
recommend erring on the conservative side here; if you're unsure
whether you're sharing too much, tell the question-asker that they
should talk to me. I'm always happy to help people with problems.
"Can I just look at/use/copy your code?" Definitely not
acceptable. Keep in mind that both participants are cheating here; the
person who is copying and the person who is allowing their friends to
copy. Students that I feel are cheating in this manner (this is
cheating) will not be treated nicely.
Also note that using code that you get off the web, from a friend,
etc. and turning it in as your own is considered plagiarism, just as
if you did it in a paper. This will result in (at least) a zero for
that assignment.
Computing facilities
The computer science department has general purpose computing
laboratories in Harney 530 and Harney 535. Harney 235 is also open for
use at certain times, mostly in the late evening. Each student in CS
112 has an account on these systems, and they can be used for all of
your programming in this class.