|
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
- teach-cs2000@eng.utah.edu:
This is the teaching staff mailing list. Use it to send
questions to the instructor and to the TAs. You are not
allowed to subscribe to this list, you may only send
messages to this list.
- cs2000@eng.utah.edu:
This
is the class mailing list. Only the course staff is allowed
to send mail to this list. We will send urgent messages, such as
corrections to problem sets or changes in due dates, to everyone in
the class using this mailing list. All students in the class must
be subscribed to this
list. The UMail email address for registered students is added
automatically to the list at the time of registration. If for
some reason this does not work or you want to add an additional
address, you can do so by using the sympa
interface.
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.