CS 262 / 003
Introduction to Low-level Programming
Meets
Friday 9:00 am - 10:15 am in The Engineering Building 1103.
Professor
Zoran Duric.
Teaching Assistant
Farid Hendi
Course Web Page
http://cs.gmu.edu/~zduric/cs262.html
Textbook
The text is Brian Kernighan and Dennis Ritchie, The C Programming Language, 2nd ed., Prentice Hall, 1988.
About the Class
Most high-level programming languages (and particularly Java) insulate the programmer from the realities of the hardware on which the programs will run. C is the exception since it was originally designed to implement the Unix operating system. C offers the programmer direct access to much of the underlying hardware and, for programs running under Unix, direct access to operating system services. For these reasons C remains the language of choice for systems programming.
This is a (short) course on "low-level" programming using C. We will learn C with heavy emphasis on pointer operations.
Topics
Planned topics include:
- C Types, Operators, and Expressions
- Control Flow
- Functions and Program Structures
- Pointers and Arrays
- Dynamic memory allocation
- Structures
- Bitwise operations
- Input and Output Libraries
- The Unix System Interface
Course outcomes
The students will:
- Be able to implement, test and debug a designed solution to a problem in a
low-level programming language, specifically the C programming language.
- Demonstrate a good understanding of C language constructs such as pointers,
dynamic memory management, and address arithmetic.
- Demonstrate a good understanding of C libraries for input and output, and the
interface between C programs and the UNIX operating system.
- Demonstrate an ability to use UNIX tools for program development and
debugging.
Programs
There will be several programming assignments.
Programming assignments will be posted on the course website
You may discuss the programming projects with other students (this is
encouraged) but you must do and submit your own work.
No joint work will be accepted. Read the CS Department honor
code:
http://cs.gmu.edu/wiki/pmwiki.php/HonorCode/CSHonorCodePolicies,
and the University honor code: http://honorcode.gmu.edu
. You are bound by these honor codes. Any submitted work
which shows too much commonality with others' work to be completely
original, or any plagiarized work, will receive a grade of 0. Any
code which is presented in class or provided to you as part of the
project may be included in your programs.
You can only turn in a program once. No revisions or additions
can be made to your program after it has been submitted. Late
programs will be accepted with a 10 points per day late penalty. You
are responsible for keeping backups of your work ("my disk crashed"
and "my roommate ate my program" are not
reasons for late submissions).
Grading
There will be a midterm exam and a final. There
will be no makeups on exams except under exceptional circumstances (as judged by
me), and any such makeup must be arranged in advanced. Grades will
computed from a weighted average computed with the following weights:
- programs: 35%
- midterm exam: 30%
- final exam: 35%