This course gives an introduction to using the Unix operating system, shell scripting, programming in C, software testing and debugging, version control systems, and basic software development methodologies.
The official calendar description is here.
The following is a brief, tentative list of topics that will be covered in this course:
- Basic concepts: Files, programs, processes, users, groups, permissions
- Remote login via ssh
- Using the Unix shell
- Basic Unix command line tools, input and output redirection, pipes
- Shell scripting
- Data types
- Control structures
- Functions and recursion
- Handling command line arguments
- Code organization
- Dynamic memory management
- File manipulation
- Managing multi-file projects using make
- Subversion (SVN)
- Software development life cycle (SDLC)
- Software development methodologies: waterfall model, rapid prototyping
- CSCI 1101: Computer Science II or
- CSCI 2110: Introduction to Computer Science
The following is a tentative list of topics covered in the lectures. The dates are approximate. In particular, you will notice that there are some dates, including a large block at the end of the term, that have no associated lectures. I will use these as "overflow" areas because some topics will take longer to cover than anticipated on this schedule. Not all slides are available yet. They will be posted as I get them ready.
|Jan 9||Introduction to Unix|
|Jan 11||Unix shells and basic concepts|
|Jan 14||Files and directories|
|Jan 16||Output redirection (same slides as Files and directories)|
|Jan 21||Inodes (same slides as Files and directories)|
|Jan 23||Searching, wildcards, and regular expressions|
|Jan 28||Shell scripting|
|Jan 30||Introduction to C|
|Feb 6||Components of a C program|
|Feb 8||Comparison of C vs Java|
|Feb 11||Formatted I/O in C|
|Feb 15||Data types in C|
|Mar 6||Command line arguments in C|
|Mar 8||Writing large programs|
|Mar 13||Dynamic memory allocation in C|
|Mar 15||File manipulation in C|
|Mar 22||Development methodologies|
The following is the list of labs. The lab notes will be made available in time for each lab. This list is subject to change, but I hope the final result will be close to what is posted here.
|Jan 14||Log in to UNIX, write a simple Java program, basic UNIX commands, SVN basics|
|Jan 21||Unix utilities and emacs|
|Jan 28||Subversion (SVN)|
|Feb 4||Shell scripting|
|Feb 11||Compiling C programs, gcc|
|Feb 25||Data types, formatted I/O in C|
|Mar 4||Functions and recursion in C|
|Mar 11||Debugging and testing|
|Mar 18||Command line arguments, pointers in C|
K.N. King. C Programming: A Modern Approach. 2nd edition, W.W. Norton & Company, 2008.
G. Glass and K. Ables. UNIX for Programmers and Users. 3rd edition, Prentice Hall, 2003.
E. Nemeth, G. Snyder, T.R. Hein, and B. Whaley. Unix and Linux System Administration Handbook. 4th edition, Pearson Education, 2010.
B.W. Kernighan and D.M. Ritchie. The C Programming Language. 2nd edition, Prentice Hall, 1988.
- 7–10 assignments (A)
- The n–1 best assignments count (e.g., if there are 7 assignments, the 6 best assignments count)
- Each has equal weight.
- 2 Midterms (M)
- Final (F)
Grade = max(30% * A + 20% * M + 50% * F, 30% * A + 70% * F)
You may discuss assignments with each other, but do not exchange notes.
Late assignments are accepted only if you were sick on the day the assignment was due or if there is an important event in your personal life that prevents you from completing the assignment on time. In the latter case, you must discuss these circumstances with me in advance to apply for a reasonable extension.
If you miss an exam, you will be given the opportunity to sit the exam at a later date. You must, however, present a good reason why you were not able to sit the exam at the regular scheduled time. Also, unless there are a large number of students who missed the regularly scheduled exam, make-up exams are oral exams.
I will not tolerate any form of plagiarism (copying from your classmates, copying solutions from the web, etc.). According to university regulations, I have to report you to the Faculty's Integrity Officer if I suspect you of academic dishonesty, and I will. The Integrity Officer may refer your case to the Senate Committee on Plagiarism. The penalty for plagiarism can range from failing the course to expulsion from the university. So please save me and yourself the aggravation. For more information, make sure you read the Dalhousie Academic Integrity Page.