Johnsonbaugh Kalin

CS 2000: Introduction to Programming in C

Fall 2009


Instructor: William B. Thompson, 3446 MEB, 801-585-3302
                    Office hours: by arrangement
                   
Lectures: Monday, Wednesday, 1:25pm-2:45pm, WEB 1250
Labs: Friday 9:40am-10:30am or Friday 10:45am - 11:35am, WEB 226 (CADE), Lab #2
TA: L. Kamron Egan
Consulting: [Hours] [Queue: Student sign up] [Queue: Launch by TA] [Help]

Introduction to essential programming concepts using C.  Decomposition of program into functional units; control structures; fundamental data structures of C; recursion; dynamic memory management; and low-level programming.  Some exposure to C++.  Laboratory practice. (4 credits, Co-requisite: CS 1010, Intended for non-CS/CE majors).

Class Information

There will be two 80 minute class lectures and one 50 minute discussion section each week. Additional TA consulting hours will also be provided.

Time Requirements

This class requires substantial amounts of time outside of the lecture and laboratory sessions to complete programming assignments. For some, programming comes easily and assignments can be completed quickly. For others, assignments will take much longer to finish successfully. As a result, it is not possible to provide a meaningful estimate of the time requirements for this class, except to note that for many this course will be far more time consuming than its four credits might lead you to believe.

Communication

Please do not send mail concerning this course directly to either the instructor or the TAs. Instead, use the teach-cs2000@eng.utah.edu mailing list.

Text Book

Applications Programming in ANSI C, 3rd edition, Richard Johnsonbaugh and Martin Kalin, Prentice-Hall, 1996. On-line versions of all programs listed in the text, errata, and a few potentially useful links are available on the text book web page .

Assignments and Grading

Course grades will be based on programming assignments (total of 45%), midterm examinations (15% each), a final examination (20%), and participation in the labs (5%).  Material on the examinations will be drawn from class lectures, discussions sections, and programming assignments. The second midterm examination and the final exam will both include all material covered up to the date of the exam. Copies of exams from previous years are available.

Letter grades will be assigned based on the following scale:



   
B+
89 - 87
   
C+
76 - 74
   
D+
63 - 61
   


A  
100 - 93

B   
86 - 80

C   
73 - 67

D   
60 - 54

E  
50 - 0
A-
92 - 90

B-
79 - 77

C-
66 - 64

D-
53 - 51




Programming assignments will be due at 1:00pm on the day specified in the assignment. Late assignments will not be graded. Any changes to the posted assignments will be mailed to the class mailing list. Each assignment will be marked as not for credit or for credit . Not for credit assignments will be graded and returned to you, but the assignment grade will not affect your course grade in any way.

All programming in this course will be done in ANSI C.

All laboratory sections will be conducted in the College of Engineering Computing Facility (CADE Lab ), WEB 226, lab 2. TA consulting hours will also take place in the CADE Lab.

Facilities in the CADE Lab are available for use in working on the programming assignments. CS 1010, Introduction to Unix, is a co-requisite for this course and covers the basics of the Unix operating system which is used in the CADE. Discussion sections will provide information on use of the EMACS editor, the gcc compiler, and the gdb debugger.

It is possible to develop C programming on a Mac or PC, but all such programs must be transferred to the CADE Lab for electronic submission and must compile and run in the CADE Lab using the version of gcc currently installed there.

Mac OS X supports gcc along with the Xcode IDE .

The most common tool used for code development under MS Windows is Visual Studio.You are likely to encounter problems porting code developed using Visual Studio to the CADE Lab and will need to allocate extra time to make any necessary changes. Note: You must turn in source code which will compile and run using the current version of gcc in the CADE Lab, along with only the standard libraries associated with gcc. Code which only compiles and runs using Visual Studio will not be accepted, nor will extensions be granted for code that works with Windows but won't run in the CADE Lab.

A second option for Windows systems is to run gcc using the free Cygwin package, which simulates a Linux environment within Windows. For this class, you may find Cygwin easier than using the native code development environments on Windows, though it is not trivial to install.

Emacs and gcc are standard tools available on all Linux systems.  Some prefer the vim editor (also called vi).

Useful links:

Academic Integrity (aka Cheating)

Working with others is a good way to learn complex skills such as programming. In a course like this, however, assignments serve both as learning exercises and as a mechanism to evaluate your performance in the course. It would be unfair to others in the class to base one student's grade on work actually done by someone else. To deal with this dichotomy of purpose regarding assignments, class assignments will be divided into two categories: not for credit, and for credit.

You are free to work with others in any way you choose on not for credit assignments. These assignments will be graded and returned to you, but the assignment grade will not affect your course grade in any way.

Work on for credit assignments must be your own. On such assignments, you will be given a failing grade for the course if you either turn in material clearly based on work that is not your own or you knowingly supply code or other information to another student that appears as part of his/her submitted material. Note that the failing grade is for the full course, not just the particular assignment involved. Note also that you will fail the course if you knowingly supply code or other information to another student, even if you turn in original work for yourself.

When taking a quiz or exam, you must work completely independently of everyone else. Any collaboration here, of course, is cheating.

Turning in work that is not your own is cheating, as is helping someone else to turn in work not their own.  This is a serious violation of academic standards.  Students violating this standard will be failed from the class on the first offense.

Please read The University of Utah Code of Student Rights and Responsibilities (Sections I-B-2 and V-B in particular) for a detailed description on the University policy on cheating.

Anyone submitting assignments for credit in this class must provide a signed form indicating that they have read and understood this policy.

Students with Disabilities

The University of Utah seeks to provide equal access to its programs, services and activities for people with disabilities. If you will need accommodations in the class, reasonable prior notice needs to be given to the Center for Disability Services, 162 Olpin Union Building, 581-5020 (V/TDD). CDS will work with you and the instructor to make arrangements for accommodations.

All written information in this course can be made available in alternative format with prior notification to the Center for Disability Services.