Cmp Sc 2750 -- System Programming and Tools
Spring 2017
- Prerequisites
- Cmp Sc 2250
- Textbooks
- Paul S. Wang. Mastering Linux. CRC Press. 2011.
- Yung-Hsiang Lu. Intermediate C Programming. CRC Press. 2015.
- Arnold Robbins. Unix in a Nutshell (4th ed.). O'Reilly. 2005.
- Additional material from various web sites to be posted.
Course Description
This course covers systems programming, scripting, libraries, utilities,
and development tools. Additional programming topics include piping,
binary files, exception handling, command-line arguments, and symbolic
debugging. This course also explores tools available in the Unix/Linux
environments.
Goals of the course
- Command-line processing in Unix/Linux
- Stream editing, using sed, awk, and regular expressions
- Program development and optimization tools, including Makefile,
gdb, git, and gprof
- Introduction to C
- System calls in Unix/Linux
Topics
This course is about advanced program development techniques in
Unix/Linux. You are expected to be familiar with basic Unix usage,
such as editing a C program, and compiling and executing the same using
the gcc compiler. This course will cover more intricate
aspects of Unix, including development tools and environment, as
described below:
Outcomes
At the end of this course, you are expected to program proficiently in C
under Unix/Linux environment. You should be able to use various
programming tools in Unix/Linux for compilation, execution, debugging,
and code maintenance. Additionally, you should be able to understand
some basic system programming.
Email Requirements
All correspondence should be made through your UMSL-provided mail.
Attendance
I'll expect you to be present in most of the classes. I will not be
taking attendance but if you start missing too many classes, please take
responsibility for your absence, specially when it concerns tests and
homeworks. When you come to class, you must change your cell phone to
silent mode. If you are more than ten minutes late, please try to not
disrupt the class. I'll penalize you by one letter grade for habitually
coming late to class (more than five times I notice you coming late).
Projects
You will be given programming assignments, typically a set of programs
every two weeks. Assignments will be due at 11:59pm on the day noted
on the assignment. Assignments should be submitted on delmar and must
execute properly on delmar for credit. You should start working on the
project as soon as it gets assigned as some of them may get tricky. If
you do not know how to work on a project, see me as soon as possible
for help.
Grading
The grade will be based on programming and homework assignments and
three tests. All tests will be open book and open notes but no
electronic devices will be permitted. Each assignment must be
meticulously documented and clearly identify its purpose, author, and
date. I'll like to
read your submitted code; I should
not
have to figure it out. If you miss any test or assignment without
making
prior arrangements, you will have a zero. I will not
give any make up test. The distribution of grades will be as follows:
Anyone desiring an EXC grade after March 31, 2018 must be passing the
course at that point to get EXC.
Failure to hand in any assignment will result in an automatic zero for
that assignment. If some student is unable to hand in an assignment by
the deadline, he/she must discuss it with me before the deadline.
I'll encourage you to talk to other students regarding homework but you
should not collaborate to the extent that two submissions are copies of
each other. If you are found copying an assignment (from another
student or internet), or if your submission has unreasonable
similarity to another submission, you get a zero for that
assignment automatically. A second offense will be reported to the
University officials and students involved will face serious
consequences. I may ask you to come to my office and explain your code
to me; in case you are not able to explain the code to my satisfaction,
I'll assign you a zero in that project.
The projects in this class will take up a lot of your time. So, you
should start working on those as soon as they are assigned. In the
past, the students who have asked a lot of questions have scored better
grades. Do not hesitate to ask a question in class, in my office, or
over email, especially if you do not have an idea on how to start
working on the project.
Miscellaneous
If you have any disability that requires an accommodation (as per UMSL
policy), you must notify me in advance. If you cannot attend the class
due to a religious holiday or a university-sanctioned event, please let
me know in advance as well. In case you are down with the flu, please
stay absent from the class till you recover, and contact me via phone or
email. I'll try my best to make accommodation for you in that case.
You have an account on one of the Linux machines on campus (delmar) and
you should use it for all assignments. Any assignment that fails to run
on delmar automatically gets a zero. You may want to print the lecture
notes before you come to class.
Any unsigned email and email not in plain text will go unanswered by me.
Please do not send me any attachments without talking to me first.
Exam Dates
Test 1 |
February 14, 2018 |
Test 2 |
March 21, 2018 |
Test 3 (Final) |
May 09, 2016; 07:45am |
Test 3 (Final) will be comprehensive. Other tests are not
comprehensive.
List of Unix/Linux commands expected to be known
Logging in |
login, ssh, logout, ^d |
Files |
vi editor, path names, ls (with options), pwd, mkdir, rmdir, cd, mv,
rm, cp, file metacharacters, cat, more, head, tail, chmod, chown,
chgrp, spell, wc |
Process handling |
^c, ^z, fg, ps, kill |
Environment |
Acquaintance with .cshrc and .login files, modifying cd path,
aliases, history and use of !, env, stty, clear, date, cal |
Others |
Redirecting and piping (basic), man, grep, script, prof |
UMSL Course Policies
Participation (expectations)
- It is vitally important that our classroom environment promote the
respectful exchange of ideas. This entails being sensitive to the
views and beliefs expressed during discussions whether in class or
online. Please speak with me before recording any class activity.
It is a violation of University of Missouri policy to distribute
such recordings without my authorization and the permission of
others who are recorded.
- Turn off sound on beepers, cell phones, and other devices during
class. Adherence to the Student Conduct Code is expected.
- I am committed to insuring a positive learning environment by
respecting that University policy (p.
66).
- Your success in this course will heavily depend on your ability to
communicate, engage and participate in all course activities.
Successful completion of this course requires that a student keep up
with all assignments, quizzes, projects and tests.
- If you are unable to participate in the scheduled class activities,
you must notify the instructor within the week of that class module.
An unexcused failure to engage or participate with the class will
be counted as an absence; unexcused absences may result in failure.
The instructor reserves the right to make judgment to accept
and/or makeup assignments missed because of failed participation in
the course activities.
Academic Integrity/Plagiarism
- Students are responsible for being attentive to and observant of
campus policies about academic honesty as stated in the University's Student
Conduct Code (p.~60).
- To avoid accusations of academic dishonesty, please submit all
written work to the Turnitin system before finalizing what you
submit for evaluation. Check information about The Writing Center
@UMSL that is linked to MyGateway Home.
- Plagiarism is the use of another persons words or ideas without
crediting that person. Plagiarism and cheating will not be
tolerated and may lead to failure on an assignment, in the class,
and dismissal from the University. View
this campus policy
Mandatory Reporting
- Under Title IX, all UMSL faculty, staff, and administrators (with
limited exception) are obligated to report any incidents of sexual
harassment, sexual misconduct, sexual assault, or gender
discrimination to the Student Affairs office and/or other University
officials. This ensures that all parties are protected from further
abuses and that victim(s) are supported by trained counselors and
professionals. Note: There are several offices at UMSL (e.g.,
Counseling Services, Health Services, Community Psychological
Service, Center for Trauma Recovery, and Student Social Services)
whose staff are exempt from Title IX mandated reporting, when the
information is learned in the course of a confidential
communication.
Access, Disability and Communication
- Students who have a health condition or disability, which may
require accommodations in order to participate effectively in this
course, should contact the Disability Access Services
Office. Information about your disability is confidential.
- 144 Millennium Student Center
- Phone: (314) 516-6554
- If you have difficulty communicating in English with the instructor
of this course, contact the Office of International
Students and Scholar Services.
- Phone: (314) 516-5229
- Email
Student Support and Services
Technical Support
- My Gateway (Blackboard): If you have problems logging into your
online course, or an issue within the course site, please contact
the Technology
Support Center.
- Phone: (314) 516-6034
- Email
- Wimba: If you have any questions regarding Wimba Classroom and
Wimba Voice Tools, contact the Faculty Resource Center:
- Phone: (314) 516-6704
- Email
- Outside normal office hours, you may also contact Wimba for 24/7
assistance:
- Phone: (866) 350-4978
- Email
Academic Support
- The Online Writing Lab: At our My Gateway site, students can
send their papers to our tutors, who will read them and send them
back with suggestions. Students can also access SafeAssign, which
identifies quoted material in their essays.
- Visit the online Writing Lab page on MyGateway to submit drafts
online.
- We try to respond within 48 hours, but it may take longer, so
allow ample time.
- NetTutor: Online tutoring in many subjects is now available
through NetTutor. In your courses on MyGateway, click on Tools and
select NetTutor to log in.
Student Services
Departmental Tutoring
- The department offers tutoring for up to Cmp Sci 3130, and
occasionally for other courses
- Check MyGateway organization CSTutoring.
Tentative Calendar
This is a rough outline; there will be two lectures allocated to tests
and I have two extra lectures to make sure that we can cover the
material.
Week 1 |
- Introduction; Different Unix shells; Shell metacharacters
- Basic Unix philosophy and review of some commands to illustrate
command line structure
- Hand over a list of commands assumed to be known; if the students do
not know these commands, they should be able to look them over using
man pages
- Organization of man pages; searching for help using man
|
Week 2 |
- Introduction to shells; command line
- Variables; Environment variables. Shell built-in variables; I/O
redirection, File streams
- Programming assignment to write code by consulting the man pages
|
Week 3 |
- bash shell
- Difference between child shell and subshell
- Creating shellscripts
- Control statements
|
Week 4 |
|
\item Handling interrupts; Command line options; Filename generations
\item Receiving the output value; successful or unsuccessful termination
\ei
\item [Week 5]
\bi
\item Regular expressions (with sed and awk)
\item Test 1
\ei
\item [Week 6]
\bi
\item Functions and arrays in \verb#bash# shell
\item Revision control system
\item Make utility
\ei
\item [Week 7]
\bi
\item Make utility
\item Library creation (static and dynamic linking)
\item Gnu debugger
\ei
\item [Week 8]
\bi
\item Debugger
\item Code profiling
\ei
\item [Week 9]
\bi
\item C Programming: Bit operators
\item C Programming: \textsc{i/o} and string handling
\ei
\item [Week 10]
\bi
\item C Programming: Files, including binary files and random access
\item C Programming: multiple file compilation, header files, prototyping
\ei
\item [Week 11]
\bi
\item C Programming: Macros, preprocessor
\item Temporary files
\ei
\item [Week 12]
\bi
\item Dynamic memory allocation/deallocation/use
\item System Programming: System calls, fork/exec/wait/waitpid
\ei
\item [Week 13]
\bi
\item System Programming: Signal handling
\ei
\item [Week 14]
\bi
\item System Programming: Shared memory
\ei
\ei
\end{document}
\end{document}
Some sites of interest to the class
At the end of semester party; 12/14/2007