ESE116
Syllabus
C programming in the Unix Environment
CU's: .5
This course provides an introduction to C programming in a Unix environment. C provides the programmer with a great deal of control over machine resources and are commonly used in situations where low level access or performance is important. This course covers programming topics such as pointers, structures, memory management, the preprocessor, the compilation process, debugging, and makefiles. It covers Unix topics such as navigating the file system, file management, utility commands, man pages, i/o redirection, processes, and pipes.
Prerequisite: Experience equivalent to coursework in ESE112 or CIS110/120.
For those who already know C, a waiver exam is given early in the semester, typically the second week of classes. Details are announced on the home page of the course web site. The ESE policy is that passing the waiver exam satisfies the C programming requirement in the cpg but does not earn any cu's. The 0.5 cu requirement must be fulfilled by taking another ESE course.
Textbook
C for Java Programmers by Muldner, ISBN: 0-201-70279-7
Grading
The course grade will determined as follows:| Assignments | 35% |
| Participation* | 15% |
| Quizzes | 50% |
Questions, Comments
- Your feedback is valuable and we want to do our best to address your questions and comments!
- About course material (concepts, homework, labs, logistics): Post a message on the bulletin board. Please do not email the TA's or professor about these topics.
- About special circumstances (e.g. lab/exam conflict): Email your TA or the professor.
Regrade Requests
Homework Regrades:
- Regrade requests are accepted up to one week from the time students were notified of their grades.
- Post an online Regrade Request (see the Homework page)
Test Regrades:
- Regrade requests are accepted up to one week from the time students were notified of their grades.
- Read the posted grading guidelines
- Go to 203 Moore to review your quiz (they can not be taken away). Ask for Denice.
- If you still have a question, fill out a paper regrade form (found in 203 Moore)
- The graders will send you an email about the decision.
Participation
Attendance of the Lab is required. Missing up to 2 labs is forgiven. Be sure to sign the attendance sheet.
Attendance/participation means coming to lab on time and working on course material in a sociable way by
- focusing on coursework
- not distracting others by im'ing, net surfing (other than course-related), etc.
- when pair programming, taking turns
- Note: Helping each other during the lab is encouraged
- 100/100: shows, works on coursework (first or second missed lab. However missed labs show up in grade reports as 0 until end-semester)
- 80 (60/40/20): late (really late)
- 80 (60/40/20): disruptive; won't take turns in partner work (repeatedly)
- 0/100: no show for 2+ time
Submitting Assignments
Assignments are submitted online via a link on the Content page. You may submit work multiple times. For example, you may realize after submitting work that it contained an error. You can resubmit it and the most recently submitted work will be graded.Late Policy
Work submitted after it is due but within 24 hours will be accepted and all problems will be graded with a 20% penalty.Honesty Policy regarding Homework Assignments
NOTE: Although we encourage free collaboration during lab time, homework assignments should be completed individually. We use the "moss" service to check the homework submissions for high degrees of collaboration. Generally if we discover a problem in the first four weeks of the semester, we will warn the students involved. After that, consequences may involve zero assignment grades or diminished course grades for all concerned (helper/helpee), and/or involvement with the Office of Student Conduct.
Guidelines:
- You must design, type, and edit your own code.
- Copying someone else's file/code is not allowed.
- Allowing someone else to copy your code, either explicitly or implicitly by leaving your code unprotected, is not allowed.
- Editing each other's files is not allowed
- Showing code: A student who needs help with debugging a program may show another student his/her code. A student who is helping another student may not show his/her code.
- Discussions:
- "High level" discussions are fine.
For example, discussions about the problem statement. - "Low level" discussions are fine.
For example, discussions about Java syntax, understanding compiler error messages, understanding the mechanics of the Java language. - "Mid level" discussions require discretion. In some courses, discussions at this level are not allowed. In this class, unless explicitly stated otherwise, you may collaborate with classmates at this level, provided that you cite at the top of your files the names of the classmates that you worked with and those who helped you. For example:
/* * Chris Brown * Homework 2 * 5/6/2007 * I worked with Pat Smith and Jessie James * I received help from Jo Johnson */There may be some "no collaboration" assignment, or ones in which collaboration with only with a few specific people is allowed.
- "High level" discussions are fine.
- You can ask and answer high and low level but not mid-level questions, as described above.
- Use your best judgement to protect both yourself and your friends. In Penn Engineering, typically if a professor suspects unwarranted collaboration, all participating parties are penalized (both helpers and helpees).
- Use your best judgement about asking or answering questions of other students. For example, if you are supposed to implement Algorithm X that is described in the book, and you don't understand Algorithm X, then you can ask another student to explain it to you. However, if you are supposed to come up with your own algorithm to solve a problem, then you can not ask another student to tell you their algorithm.