The web site for this
course is
http://www.cs.sjsu.edu/faculty/beeson/courses/cs49/cs49Spring2009.html
. At this URL you will find written assignments, reading assignments, the schedule of
lecture topics, a copy of this green sheet, and other
information which may be posted from time to time. The Department and
University make no commitment to keep this site up and running at all times. (Although it has been pretty reliable in the past year.) If
it goes down the night before an assignment is due, you were warned. You might
want to download important files when you can, and keep a local copy on your
own machine. There is also a link to a form for online submission of
programming assignments.
Work to be accomplished
There will be out-of-class programming assignments, reading and study in the textbook. There will not be a term project. You can expect a programming assignment at least weekly.
Textbook:
A Book on C, by Ira Pohl and Al Kelley. ISBN number 0201183994.
Prerequisites
Previous programming experience, and have met the GE math requirement. If you have any doubt about whether "previous programming experience" applies in your case, please consult the professor for advice. For example, having had the first course in computer science (for CS majors) taught in Java (or any other language) would suffice.
Office hours
MW 18:45 to 19:15
MW 13:30 to 14:45
W 9:15 to 10:15
My office phone number is 924-5113. There is voice mail on that line, but I will check it only on Monday and Wednesday. Perhaps your question can be answered by email. You can email me, I’ll do my
best to respond promptly but, for example, you might send an email on Friday
noon and not get an answer until Monday night. If your question involves code
that doesn’t work, it’s best to bring the code to my office where
we can look at it together.
My email address is ProfBeeson at gmail.com. (I write it that way to prevent web crawlers from picking it up). Please put "49" in the subject line (along with whatever else you want to put there).
Consequences of cheating:
Cheating on exams or copying
homework or will result in an F in the class. You will not be allowed to drop,
and the incident will be reported to the University administration. See also the university's academic integrity
statement below.
Software
You will write programs in C. You will submit programs in
a text file, so you can use any development
environment on any machine to produce your assignments. They will be compiled with gcc.
Homework Submission--due dates and time.
You will submit your homework assignments
online through a web-based submission system accessible from the course web
page. The due time is always six pm on
the due date. The system may (and usually will) accept
late homework until midnight
without penalty, but if there are technical problems (such as overloaded
servers), it is your risk if you
don’t submit by six pm. Multiple submissions
are allowed; the last submission is the one that counts.
Homework Submission--online grading
Once you submit your assignment, the system will evaluate its performance on a certain set of possible inputs. These
inputs will include some of the examples published with the assignment, as well as additional ones, including possibly
randomly generated legal inputs. The system will assign your grade within a few minutes, providing you with some meaningful
feedback if your program is wrong. You can resubmit as many times as you like before the deadline. The latest grade is the
one that counts. (Not the highest grade, so be careful with multiple submissions close to the deadline!)
There is also a way to submit late assignments online; a grade penalty will be imposed automatically by the system. Specifically, one letter grade if the assignment is less than 24 hours late, and two letter grades if it's more than 24 hours late. There will be a last day to submit each assignment, at least seven days after the due date, and assignments will not be accepted after that date.
Grading system
One half for the homework, one-quarter for the two midterm exams (thus one-eighth each), one-quarter for the final exam.
There is a minimum-performance clause as well--you must turn submit a serious and timely effort on all the homework assignments. This requirement will be enforced as follows: Failing to submit a serious effort on one assignment means your course grade cannot exceed B-. Failing to submit a serious effort on two assignments means your course grade cannot exceed C-. Failing to submit a serious effort on three or more assignments means you flunk the course. Normally an assignment that earns an F will not be considered a serious effort, since you have at least a week after the due date to consult with the professor, fix your errors, and earn a C.
Grading FAQs
Q: I was sick and didn't turn in the programming assignment,
can I submit it late without penalty? A: Yes, If you made arrangements (by email or
phone) before the due date, there will be no penalty, but that grade will have to be adjusted by hand later, so you will still see a late penalty automatically imposed. If you are so ill that you can't make the submission even one week late, special arrangements will have to be made. Q: I wasn't sick but I had midterms in my other classes
so my programming assignment wasn't done on time. Can I turn it in late? A: Yes,
you must turn it in. Turning it
in late will cost you one letter grade per day of delay, down to a C, but you must
turn in all programming assignments to pass the course. But note there is an ultimate deadline (seven to ten days after the due date) after which submissions are no longer accepted. Q: I don't understand the grading
system. A: let's take an example. You have an A on the homework assignments, a B- and a C+ on
the two midterms, and a C on the final.
So that’s
( 1/2) * 4.0 + (1/8) *
2.7 + (1/8)*(2.3) + (1/4) * 2.0 = 3.125 = B. Numbers convert to letters this way: 3.3 is the lowest B+;
3.5 is the lowest A-, 3.71 is the lowest A, anything over 4.0 is an A+.
Final Exam
16:00 section: Friday, May 15 , 14:45
17:30 section: Monday, May 18, 17:15
Course Objectives as specified by the Department
To provide students with extensive practice writing C programs (numerous programming homework assignments).
To teach students all of the steps needed to design, write, debug, and execute C programs.
To expose students to fundamental elements and issues of program logic.
To encourage students to write well-documented, readable and maintainable code.
To teach students to use an Integrated Development Environment for program development.
To teach students the following aspects of writing C programs:
Compilers, object files, linkers, debuggers.
Data types including characters and strings as well as numeric types.
Formatted Input/Output in C. Character I/O and input validation.
Operators, expressions and statements.
Control statements, branching and looping.
Functions, formal parameters and function arguments.
Arrays and pointers.
Character strings and string functions.
Storage classes, linkage and memory management in C.
Structures.
File I/O.
To cover commonly used C stylistic conventions.
Student Learning Outcomes:
Upon successful completion of this course, students should be able to:
Write and debug C programs until they are running without needing access to any reference resources.
Use an IDE (such as Microsoft Visual Studio.Net or Eclipse) for program development and debugging.
Solve a given applications problem using C within a reasonable time period.
Produce code that is correct, clear, well-organized and easy to understand.
Read, interpret and understand C code written by others.
Answer general questions about program development and tools.
Describe in detail the workings of any element of C mentioned under the course objectives.