CGS 3460, Programming using C

Course Description and Administration

 

Welcome! In the old M.I.T. tradition we will make this course comparable to taking a drink from a fire-hose.

Aren't you glad it is so hot?

- The Management.

 

The Course and Its Objectives

This course provides an in-depth treatment of the C programming language and will cover the basic program structures, data types, operators, functions, array, strings, structures and pointers. This course also provides an introduction to good programming practices and style.

You will be responsible for reading the announcement page on WEB CT regularly for any new announcements.


There is a harsh penalty for late assignments. You are encouraged to start your assignments as soon as possible to finish them on time. You may develop your programs anywhere in the world, but they must be compiled with 'gcc', submitted and run on 'rain'. You can use these tools for uploading and compiling programs from windows.

Software porting problems are YOUR RESPONSIBILITY. Murphy's Law: you will have software porting problems.

<Back to index>

 

Attendance

Since roll call will not be taken in lecture or discussion sections, your attendance is generally optional. However, since the students who do the best in this course are those who attend the course's lectures and discussions, your attendance is strongly encouraged and expected! To do your best in this class, you should consider your attendance mandatory!!

Examination make-ups are only given in cases of documented medical conditions. At the instructor's discretion, the grade on a missed exam may be interpolated from the student's other grades.

 <Back to index>

 

Cheating and Academic Dishonesty

Unfortunately, it is necessary to mention the subject of cheating. Many (if not all!) of the homework assignments given in this class require the development of programs or program fragments, and there are always many correct solutions to any non-trivial programming problem. Since the goal of this course is to learn the skills required to construct programs, the student must actually engage in the creative process of constructing those programs - simply producing a working program is not enough. Each exercise, if carried out by the student, will give the student understanding, or will reinforce the student's understanding, and enhance the student's skill in programming. Hence, the student is permitted to inspect related problems and ask questions of the TA and others in the class about the problem and related problems. But the student is not permitted to copy the work of any others, including but not limited to the TA, previous TAs, or other students who are taking the class or who previously took the class. Likewise, students allowing others to copy their own work are guilty of cheating.

The assignments in this course are not team projects unless you are explicitly told so by the instructor. You may consult with others when attempting to develop your solutions to these assignments. It is legitimate for two individuals to plan together the general approach which they will individually use in solving a problem. But once any significant details of the development and coding of the program begin to develop, collaboration should cease. This does not mean that students may not help each other, there are just limits to "helping". Follow the guidelines below:

If you let someone use your computer, make sure all copies of your work are either protected or deleted. If they take your work, even if it's without your knowledge, you can still be found guilty of an act of Academic Dishonesty. Bottom line: it is your responsibility to protect your own work.

If you are helping someone, do not help them develop the program at the computer. Discuss issues "in the air", or on paper.

Helping someone find a bug in their code is a gray area. Many bugs will stump people for many hours, and it's only humane to let people know the pitfall they've fallen into. We encourage students to help each other in this regard, but be careful: if you find all of someone's bugs, you've deprived them of the process of learning how to find bugs themselves. Here's good rule of thumb: the person you're helping must be actively engaged in the process of searching for the error. Beware of those who merely stand aside and let you fix their program: they're willing to let you make significant contributions to their program, and then turn it in as their own. This activity is unlikely to produce evidence of over-collaboration, but it is unethical nevertheless.

We have software that automatically compares pairs of programs, and reports on similarities of every kind imaginable. This software is the best of its kind in the world. We run it on every assignment. Of course, we ultimately use human judgment to decide whether there is evidence of over-collaboration.

Significant similarities between two programs will be regarded as evidence of over-collaboration and will be dealt with as cheating. The borderline where simply consulting with others becomes working as a team or copying is a gray area. If you have any doubts, you probably are working too closely and should stop - go off and work by yourself.

Because computer resources are shared, it is essential that all students use them in a way that respects the rights of others. Any attempt to copy other people's assignments, destroy other people's data or code, or deny the use of the computer to others is unethical and is considered a violation of academic honesty guidelines. The bottom line is, do not misuse the computer!

Do not cheat! Do not copy others work! Immerse yourself in the class. Learn the material. The benefit and enjoyment you will receive will be much more valuable than any consequences of cheating. Do not even think about cheating! You do not realize how easy it is for us to identify who has cheated and to prove it to others. Individuals who have misrepresented work as being their own or who have assisted another will receive as a minimum: a grade of zero on that assignment and a decrease of one letter grade on their final course grade. This is in addition to any other penalties given by Student Affairs. Everyone of you should examine the Academic Honesty Guidelines and Student Conduct Code in the University of Florida Undergraduate Catalog for more details. Ignorance of these Guidelines is no excuse!

<Back to index>

 

How to do Well in This Class

The students who get the most out of this course will be the ones put in the most effort. We will cover a large amount of material in a short time. If you cannot put in the required time to learn the material, you will do poorly. Based on our past experience in teaching this course, you should plan on devoting a MINIMUM of 20 hours outside of class PER WEEK to this course. DO NOT FALL BEHIND in the course material of significant difficulties will result.

If you want to do well in the course, attend all lectures and at least one (optional) discussion section, read the relevant chapters of the book before coming to class and start your homework early. Starting early really helps because solutions to many of the problems may not grow in your mind right away when you first look at an assignment. Starting on the problems early and letting your mind work on them in background is often the most effective and efficient way to complete the assignments.

If you are having difficulties, you owe it to yourself to get help! Interact with other students in person or via email. Bounce ideas off each other. Help each other learn! The TAs, and instructor are also more than happy to assist you. Do not be afraid to come and see us, but please observe our posted hours. We will hold numerous office hours. If you cannot make it to our office or laboratory hours but still really need help, contact one of us by e-mail.

TAs are responsible for consulting and grading. They can assist you in understanding the logic of your program, interpreting your program, and interpreting your program's output. They will have office hours for consultation that will be announced during their discussion classes and post it on this web site.

The instructor, through his lectures, is responsible for the overall course content. Assisted by the TAs, he develops all assignments, quizzes, and examinations; conducts the examinations; and grades the examinations. He is also responsible for determining the final grades and handling any disciplinary problems. If you feel that you are being treated in an arbitrary and/or capricious manner, please see the instructor.

You, not the consultants, TAs, or anyone else, are responsible for solving the assignments within the allotted time limits. The consultants are there to answer specific questions about your programs. More general questions about how to attack a problem should be directed to your TA. BUT remember: TAs are NOT there to write your programs or to debug them for you. Please have specific questions ready when you approach them.

We would really love to have everyone in the class earn an "A". If you work hard and master the material presented, you will learn some powerful and fundamental programming techniques that can and will help you immeasurably when you tackle bigger programming problems later in school and in your career.

<Back to index>

 

Policy on Late Assignments

The penalty for late assignments will be 50% per 24 hour period after the assignment is due. Therefore if you turn it in between 0 and 24 hours after the time your assignment is due, your grade for that assignement will be cut in half. If you turn it in more than 24 hours after which it is due, you will receive a 0 for the assignment. We will be submitting on Web CT, so time stamps provided by Web CT are the official turn in times. This is a harash penalty and students should make provisions for this. Itis extremeley unwise to be attempting to finish your assignment during the last few hours before it is due. Due to Murphy's Law, there is a significant probability of something going wrong, and preventing you from finishing your assignment. Computer crashes, power outages, pen-drive-eating dogs, gravity-assisted catastrophic laptop-floor collisions, and other assorted calamites are common, and they WILL HAPPEN TO YOU.

<Back to index>

 

Policy on Missubmitted Assignments

Your latest submission after the 24 hour grace period is the submission which will be graded. Be sure to check that your submission uploaded correctly. Redownload your submission and test it out. Make sure it compiles on rain. Sometimes there are server issues, particularly when many people are using it simultaneously. Be sure that Web CT uploads your submission correctly and be sure to do this well before the deadline so you do not have to worry about the late penalty.

<Back to index>

 

Policy on Regrading Work

If you feel your assignment was graded incorrectly, you will have 1 week from when the assignment is returned to discuss it with the person that graded it and attempt to get it corrected. Any grades given after this one week period will be considered final. Being returned is considered to be when exams and quizzes are made available for pick up, or when grades for your assignment are made viewable on Web CT.

<Back to index>

 

Grading and Course Requirements

Note that effective with the Summer 2009 term, UF's grading scale has been changed to include minus grades. The intent is to provide instructors with more options for assigning grades. Please see this document for details.

Students grades will be based on:

1. Programming assignments (approximately 6) (25%)

2. In class quizzes (approximately 4) (25%)

3. One midterm exam (25%)

4. One final exam (25%)

The grading scale is

ScoreLetter Grade
93+ A
[90, 93)A-
[87, 90)B+
[83, 87)B
[80, 83)B-
[77, 80)C+
[73, 77)C
[70, 73)C-
[67, 70)D+
[63, 67)D
[60, 63)D-
[ 0, 60)F

Unless averages are way off the usual 70%, no curving will take place.

Exam dates will be announced at least a week in advance. 

<Back to index>