CS 262: Introduction to Low-Level Programming
Course Syllabus - Summer 2021
George
Mason University
Department
of Computer Science
Section: B01
Format: Asynchronous
Class
Location: Online (Blackboard
Collaborate Ultra)
Instructor: Prof. Ana Loreto Gonzalez
Email: loreto@gmu.edu
Office
Hours: F,
9:00 – 10:30 AM using Blackboard Collaborate Ultra
GTA: Antara Mahmud
Email: amahmud4@masonvale.gmu.edu
Office
Hours: W,
8:30 – 10:30 AM using Blackboard Collaborate Ultra
Labs
Section Days Time Location
2B1 T,TR 09:00 – 09:50 AM
Blackboard Collaborate Ultra [Master Course]
2B2 T,TR 10:00 – 10:50 AM
Blackboard Collaborate Ultra [Master Course]
Class Communications: CS 262 will be by email using your GMU email
account. When you email, please include your name and Gnumber.
Write the topic in the subject header.
Textbook
· Brian W. Kernighan and Dennis M.
Ritchie, The C Programming Language, 2nd ed., Prentice Hall, 1988 [K&R]
Complementary
Books:
· Byron S. Gottfried, Programming with C, 2nd ed., Schumm’s Outline, 1996 or the latest [PwC]
·
Peter Printz and Tony
Crawford, C
in a Nutshell: A Desktop Quick Reference, 1st ed.,
O'Reilly', 2006 [CiN]
· David Griffiths and Dawn Griffiths, Head First C, 1st ed., O'Reilly',
2012 [HFC]
Course
Description
This course is intended to prepare students for topics
in systems programming. It emphasizes relevant concepts of the C programming
language, as well as the use of main commands of the Unix Operating System.
C is a high-level programing language that offers the
programmer direct access to much of the underlying hardware and direct access
to some operating system services for programs running under Unix. These
features make C the preference language of choice for system programming.
Prerequisites:
(CS 110* or 101*)
and (CS 211 or 222) >> *May be taken
concurrently
Course
Outcomes
1. Be able to implement, test and debug a designed
solution to a problem in a low-level programming language, specifically the C
programming language.
2. Demonstrate a good understanding of C language
constructs such as pointers, dynamic memory management, and address arithmetic.
3. Demonstrate a good understanding of C libraries
for input and output, and the interface between C programs and the UNIX
operating system.
4. Demonstrate an ability to use UNIX tools for
program development and debugging.
Evaluation
and Grading
Grade
Distribution
· Homeworks 30% drop1 lowest, average others evenly
· Project 15%
· Quizzes 15% drop1 lowest, average others evenly
· Midterm 20% see midterm replacement policy below
· Final exam 20% (cumulative) Must pass final/testing
ag. to pass class
Letter
Grade Distribution
Your
overall course score, S, will be the sum of these points.
S
>= 98 A+
S
>= 90 A
S
>=88 B+
S
>=80 B
S
>=78 C+
S
>=70 C
S
>=60 D
S
<60 F
There
will be NO make-up or extra-credit assignments at the end of the semester
Grading
Elements Policies
Each programming assignment is an individual effort,
NO collaboration allowed
· Homeworks: Description will
be posted on Blackboard on Sundays.
o Each homework has
a posted deadline.
o Submissions must
be through Blackboard by the due date.
o The latest you can
turn in work is 48 hours after the posted deadline.
o Each student gets TWO
Emergency-Day tokens, which are automatically used by submissions that are
between 0-24 and 24-48 hours late to avoid points penalty.
o Each day late (or
portion), when not covered by a token, lowers the
highest score by 10%.
o During labs your
GTA will provide assistance and give hints to develop your assignments.
· Project:
There
is ONE programming project.
o
Description
will be posted on Blackboard on July 5.
o
Student’s
solutions must be submitted on Blackboard by the assigned due date.
o The deadline for
submission is on July, 18 11:59 pm ET.
o The latest you can
turn your project is 24 hours after the posted deadline.
o There is NO
Emergency-Day tokens for the project.
o Late project
submission per day (or portion) is penalized 15% of
the highest possible score.
· Quizzes and Exams:
All
quizzes and exams must be taken during their availiability
date/time. Passing this time, NO make-up of quizzes or exams are given.
Exams Notes and Midterm replacement policy
o The final exam is
cumulative. If you perform better on the final exam than your midterm exam, we
will replace the midterm grade with the final grade.
o If you know in
advance that you are unable to make an exam for a valid and unavoidable reason
(such as a scheduled surgery, etc.), you must notify the professor at least one
week before the scheduled exam date to make arrengments,
and provide valid documentation to have chance to take a make-up.
o Per departmental
policy, you must pass a significant exam threshold to receive a passing grade
in this class, regardless of your performance on other assignments.
o Failing the final
exam (<60.0%), will result in a failing grade (F) for the entire course
unless you have achieved an average exam score FAS >=65%,
where FAS = (midterm + final)/2
Learning
Disabilities
· If you are a
student with a learning disability or other condition, please contact the
Office of Disability Services (ODS) at (703) 993-2474.
· Please email the
professor the corresponding accomodation paperwork to
set your accommodations.
· Accomodations for quizzes and
exams are automatically adjusted when taking the assessment
· In case you need
extra time for a programming assignment you MUST make the request no later than
24 hours before the deadline.
Honor
Code Policies
· All students are
expected to abide by the GMU
Honor Code. This policy is rigorously enforced. All class-related
assignments are considered individual efforts unless explicitly expressed
otherwise (in writing). Review the university honor code and present any
questions regarding the policies to instructor.
Cheating on any assignment will be prosecuted and result in a notification of
the Honor Committee as outlined in the GMU Honor Code. Sharing, collaboration,
or looking at any code related to programming assignments that is not your own
is considered cheating. See Programming Polices below.
The computer science department has an additional, more restrictive CS Honor Code that
you are also subject to. Make sure you read and familiarize yourself with these
rules.
Programming
Policies
(1)
No sharing or discussion of code for assignments. Unless
specifically stated otherwise, all assignments are individual assignments, not
group assignments. Students are expected to do their own work, not to share
programs with each other, nor copy programs from anyone else. However, you may
offer limited assistance to your fellow students regarding questions or misunderstandings
on their programming assignments. Suspected honor code violations are taken
very seriously, and will be reported to the Honor Committee. (See CS Honor Code)
(2)
No incorporation of code from any source external to
the course. You
may not incorporate code written by others. Of course, you may
freely use any code provided as part of the project specifications, and you
need not credit the source. Working something out together with an instructor
or GTA will not require crediting the source.
(3)
Back up your program regularly. You are
expected to back up your program in separate files as you get different pieces
working. Failure to do this may result in your getting a much lower grade on a
program if last minute problems occur. (Accidently deleting your program,
having problems connecting, etc., will not be accepted as excuses.)
(4)
Keep an untouched copy of your final code submission. It is important
that you don't touch your programs once you have made your final submission. If
there are any submission problems, consideration for credit will only be given
if it can be verified that the programs were not changed after being submitted.
(5)
Code must run on Mason gcc. Students may
develop programs using any computer system they have available. However,
submitted programs must run under gcc compiler
available on Mason. Your documentation should clearly state which software was
used for compilation, and once makefiles are
introduced, a makefile should be included with each
assignment submission.
Course
Topics
The
course will cover the following topics
· C Types, Operators, and Expressions
· Basic I/O, Input and Output Libraries
· File I/O
· Control Flow
· Functions and Program Structure
· Strings
· Pointers and Arrays
· Dynamic memory allocation
· Structures
· Bitwise operations
· The Unix System Interface
· vi/vim
· Debugging using GDB and Valgrind
· Compiling, Linking, Makefiles,
using multiple source files
Tentative
Schedule:
#Week |
Date |
Lecture Topics |
Reading Assignments |
Assignments/Assesments (Time ET) |
|
|||||||||||
|
|
|
|
|
Available |
Due |
||||||||||
|
|
Introductory Concepts |
Ch1 |
H1 |
Su 6/6 |
|
||||||||||
1 |
Jun 1 - Jun 6 |
Fundamentals |
Ch2 (skip 2.9) |
|
|
|
||||||||||
|
|
Operators and Expressions |
|
|
|
|||||||||||
|
|
User input & Basic Makefiles |
Ch3 |
H2 |
Su 6/13 |
H1 (Sa 6/12) |
||||||||||
2 |
Jun 7 - Jun 13 |
Control Statements |
Ch19 [CiN] |
Q1 |
Fr 6/11 8:00 - 8:00 pm |
|
||||||||||
|
|
|
|
|
|
|
||||||||||
|
|
Functions |
Ch4 (4.1 - 4.10) |
H3 |
Su 6/20 |
H2 (Sa 6/19) |
||||||||||
3 |
Jun 14 - Jun 20 |
Arrays |
Ch5 (5.1-5.6) |
Q2 |
Fr 6/18 8:00 am - 8:00 pm |
|
||||||||||
|
|
|
Ch7 [PwC] |
|
|
|
||||||||||
|
|
Arrays of Characters |
Ch4 (4.11) |
H4 |
Su 6/27 |
H3 (Sa 6/26) |
||||||||||
4 |
Jun 21 - Jun 27 |
Multidimensional Arrays |
Ch5 (5.7- 5.10) |
Midterm |
Fr 6/25 1:00 pm - Sa 6/26 1:00 pm |
|||||||||||
|
|
Preprocessing Directives |
Ch14 [CiN] |
|
|
|
||||||||||
|
|
Data Files and Formatting |
Ch7 |
H5 |
Su 7/4 |
H4 (Sa 7/3) |
||||||||||
5 |
Jun 28 - Jul 4 |
Debugging C Programs |
Ch20 [CiN] |
Q3 |
Fr 7/2 8:00 am - 8:00 pm |
|
||||||||||
|
|
Using Multiple Source Files |
Ch4 [HFC] |
|
|
|
||||||||||
|
|
Pointers, Structures |
Ch6 |
H6 |
Su 7/11 |
H5 (Sa 7/10) |
||||||||||
6 |
Jul 5 - Jul 11 |
Self-referential structures |
Ch11 [PwC] |
P |
Mo 7/5 |
|
||||||||||
|
|
Linked list |
|
Q4 |
Fr 7/9 8:00 am - 8:00 pm |
|
||||||||||
|
|
Valgrind |
Ch6 [HFC] |
|
|
H6 (Sa 7/17) |
||||||||||
7 |
Jul 12 - Jul 18 |
The Unix System Interface |
Ch2 (2.9), Ch8 |
|
|
P (Su
7/18) |
||||||||||
|
|
Bitwise Operators |
Ch13.2 [PwC] |
Q5 |
Fr 7/16 8:00 am - 8:00 pm |
|
||||||||||
|
|
|
|
|
|
|
||||||||||
8 |
Jul 19 - Jul 21 |
REVIEW |
|
Final Ex. |
Th 7/22 8:00 am - 8:00 pm |
|
||||||||||
|
Ex. period [Jul 22-24] |
|
(cumulative) |
|
||||||||||||