[ http://web.cs.dal.ca/~vlado/csci2132/coursecalendar.html ]
Fall 2018 (Sep4-Dec4) Faculty of Computer Science Dalhousie University |
# | Date | Title | |
---|---|---|---|
Course Introduction | |||
1 | We Sep 5 | Course Introduction
Course logistics and administrivia, important dates, course description, evaluation scheme and criteria; lectures, exams, assignments, and lab work; textbooks; academic integrity policy, culture of respect. Main learning objectives. Motivation for learning Unix and C, tentative list of course topics. An interesting link about programming languages used to develop some major software products and utilities: http://www.lextrait.com/Vincent/implementations.html Files: lecture notes, slides, Syllabus (PDF). | |
Part I: Unix Operating System | |||
L1 | Th Sep 6 | Lab 1: Unix: Getting Started
Logging in, PuTTY, basic directory commands, basic use of emacs, compiling and running a Java program, using SVN to submit files, head. Files: lab notes, slides. | |
2 | Fr Sep 7 | Introduction to UNIX and Unix-like Operating Systems
Introduction to UNIX: reading: Ch1 of the UNIX book, onion skin model of OS, OS functionalities, UNIX history, UNIX philosophy and principles. Files: lecture notes, slides. Reading: [Unix] Chapter 1 | A0 out |
3 | Mo Sep 10 | Unix Shells and Other Basic Concepts
Some hardware concepts, main Unix concepts, shells; Getting started, PuTTY, logging in, basic utilites and commands, logging out. Files: lecture notes, slides. Reading: [Unix] Chapter 2 | |
4 | We Sep 12 | Files and Directories
Files and directories, seven types of files, directory structure, pathnames, Commands for managing and navigating directory structure, commands for file manipulation; File permissions: users, groups, file permissions. Files: lecture notes, slides. | A1 out |
L2 | Th Sep 13 | Lab 2: Unix utilities, Emacs
Login and SVN, autocompletion, emacs, filters: uniq, wc, sort, cut. Files: lab notes, slides. | |
5 | Fr Sep 14 | File Permissions
SVN, wc command, pipelines. File permissions (continued), modifying file permissions, effective userid and group id; input/output redirection. Files: lecture notes, slides. | A0 due |
6 | Mo Sep 17 | Pipes; Links and Inodes
Pipes; Inodes, hard links, soft links. Wildcards (started). Files: lecture notes, slides. | |
Tu Sep 18 | Last day to add classes | ||
7 | We Sep 19 | Wildcards and Regular Expressions
Filename substitutions (wildcards); Regular expressions,basic regular expressions, grep, filters. Files: lecture notes, slides. | |
L3 | Th Sep 20 | Lab 3: SVN Tutorial
Use of SVN as source code repository, use of the course SVN repository. Files: lab notes, slides. | A1 due |
Part II: C Programming Language and Software Development | |||
8 | Fr Sep 21 | C Programming Language
Grep variations, Extended regular expressions (ERE). Introduction to C, writing a simple program, compilation process, C basics, similarities and differences with Java, printing output and reading input, a simple HST program. Files: lecture notes, slides. | |
9 | Mo Sep 24 | Formatted Input and Output in C
Formatted output: printf; formatted input: scanf. Files: lecture notes, slides. | |
10 | We Sep 26 | Shells and Computing Environment
More about scanf, fractions program example. Shells: functionality, popular shells, Bash shell, commands, shell variables. Programs and processes, process memory composition. Files: lecture notes, slides. | |
Th Sep 27 | Midterm I 7:30-8:30pm
Midterm I from 7:30pm to 8:30pm in the Rowe building, room 1028. | M1 | |
11 | Fr Sep 28 | Processes and Job Control
Processes: threads, process control block; Process creation, job control and process control; Foreground and background processes. Files: lecture notes, slides. | |
Mo Oct 1 | Last day to drop classes without "W" | ||
12 | Mo Oct 1 | C compared to Java: Expressions and Statements Files: lecture notes, slides. | A2 out |
13 | We Oct 3 | C Basic Types
(Fire alarm disruption) Integer representation and floating-point numbers. Files: lecture notes, slides. | |
L4 | Th Oct 4 | Lab 4: Exploring bash and C Compilation
Exploring shell (bash), compiling C programs. Files: lab notes, slides. | |
14 | Fr Oct 5 | Software Development Life Cycle
Characters type; type conversions: implicit and explicit; typedef and sizeof keywords. Software Development Life Cycle (SDLC), waterfall model, rapid prototyping model. Files: lecture notes, slides. | |
Mo Oct 8 | No class. Thanksgiving. University closed. | ||
15 | We Oct 10 | Testing; Arrays in C
Software testing; Debugging, debugging strategies, gdb debugger; Arrays in C; one-dimensional arrays Files: lecture notes, slides. Reading: C Book Chapter 8 (Arrays) | |
L5 | Th Oct 11 | Lab 5: gcc and gdb tools
Learning more about gcc and gdb; using a program as an example, invoking debugger in emacs, gcc options. Files: lab notes, slides. | A2 due |
16 | Fr Oct 12 | Multidimensional Arrays
Array example: binary search; multidimensional arrays; variable-length arrays; Latin square example. Files: lecture notes, slides. | |
17 | Mo Oct 15 | Functions and Recursion
Functions: definitions and declarations, arguments and parameters, passing by value, call stack, recursion; review of mergesort algorithm. Files: lecture notes, slides. Reading: [C King] Chapter 9 Functions | A3 out |
18 | We Oct 17 | Implementation of Recursive Algorithms
Mergesort implementation; Complexity of Mergesort; Quicksort vs Mergesort; Generating permutations example. Files: lecture notes, slides. | |
L6 | Th Oct 18 | Lab 6: Practicum 1
Work on Assignment 3 and Practicum 1 Files: lab notes, slides. | |
19 | Fr Oct 19 | Generating Permutations
Generating permutations; Mutidimensional arrays as arguments. Program organization (started). Files: lecture notes, slides. | |
Part III: Program Organization and Dynamic Memory Allocation | |||
20 | Mo Oct 22 | Program Organization
External variables (global variables); Organizing a C program in a single file; example: decimal to binary; blocks and compound statements, scope. Pointers: introduction and history. Files: lecture notes, slides. Reading: [C King] Chapter 10 Program Organization | |
Tu Oct 23 | Assignment 3 due | A3 due | |
21 | We Oct 24 | Pointers
Pointers (cont) pointer variables, reference types, address operator (&), indirection operator (*), pointer assignment, examples, common bugs, pointer arguments, statistics.c example. Files: lecture notes, slides. Reading: [C King] Chapter 11 Pointers | A4 out |
L7 | Th Oct 25 | Lab 7: Practicum 2, Simple Makefile, GitLab Start
Simple Makefile for testing; Creation of a GitLab account and a private project to be used for the course. Files: lab notes, slides. | |
22 | Fr Oct 26 | Make and Git tools
An introduction to the `make' tool and Makefile; A review of history of version control systems, introduction to git, github, and GitLab. Review of pointers; finished statistics.c example. Files: lecture notes, slides. | |
23 | Mo Oct 29 | Pointers and Arrays (Pointer Arithmetic)
Pointers and arrays, adding pointer and integer; subtracting pointers, pointer comparison; examples; Mergesort with pointers example. Files: lecture notes, slides. | |
Tu Oct 30 | Last day to drop classes with "W" | ||
24 | We Oct 31 | Strings
MergeSort with pointers example (finished). Strings: introduction, string literals and variables; reading and writing strings. Files: lecture notes, slides. | A5 out |
L8 | Th Nov 1 | Lab 8: Working on Assignments 4 and 5, and Practicums 2 and 3 | A4 due |
25 | Fr Nov 2 | String Library Functions
A common mistake with VLA declarations. More string reading examples; buffer overflow risks; string library functions. Files: lecture notes, slides. | |
26 | Mo Nov 5 | Writing Large Programs
Command-line arguments in C, sortwords.c example with insertion sort; Writing large programs, modules and header files. Protecting header files from double-inclusion, dec2bin project example (not finished). Files: lecture notes, slides. | |
27 | We Nov 7 | Compiling and Debugging Large Programs
Example: dec2bin project example, compilation of large programs; make tool, using gdb with multi-file programs; Structures (started). Files: lecture notes, slides. | |
Th Nov 8 | Midterm II 7:30-8:30pm
Midterm I from 7:30pm to 8:30pm in the Rowe building, room 1028. | M2 | |
28 | Fr Nov 9 | Structures and Dynamic Memory Allocation
Structures, arrow operator; Dynamic memory allocation: malloc and free. Heap (Free Store) started. Files: lecture notes, slides. | |
Mo Nov 12 | No class. Remembrance Day (in lieu of). University closed. | ||
Mo Nov 12 | Assignment 5 due
Assignment 5 and Practicum 3 due. | A5 due | |
Nov 12-15 | Fall Study Break, no classes | A6 out | |
29 | Mo Nov 19 | Linked Lists
Heap (Free Store) continued, efficient use of heap, additional allocation functions. Linked Lists, list.c example (student database), started. Files: lecture notes, slides. | |
Tu Nov 20 | Assignment 6 early deadline | ||
30 | We Nov 21 | Merge Sort with Linked Lists
Example with a student database finished; Merge Sort with linked lists, example. Files: lecture notes, slides. | A7 out |
L9 | Th Nov 22 | Lab 9: Assignments and Make Utility
Cloning GitLab project, lab submission via GitLab; More elaborate Makefile with a multi-file project and testing; using gdb on a multi-file project. Files: lab notes, slides. | A6 due |
Part IV: Shell Scripting and File Manipulation in C | |||
31 | Fr Nov 23 | File Manipulation
Merge Sort with linked lists example finished. Git and GitLab, comparison to Subversion (svn). File Manipulation: streams and files. Files: lecture notes, slides. | |
32 | Mo Nov 26 | File Operations
Opening and closing a file, formatted I/O with a file, character I/O with a file; block reading and writing, file positioning, example. Files: lecture notes, slides. | |
33 | We Nov 28 | Shell Scripting
Example with file writing (finished). Shell Scripting: introduction, a basic example, variables, arithmetic operations, conditional expressions, if-statement, for-loop, case-statement Files: lecture notes, slides. Reading: [Unix, Glass and Ables] Ch8 The Bourne Again Shell | |
L10 | Th Nov 29 | Lab 10: Shell Scripting (power outage)
Labs not held due to power outage. Students should finish labs on their own. Files: lab notes, slides. | |
34 | Fr Nov 30 | Final Exam Review
Final Exam Review. Course Evaluation. Files: lecture notes, slides. | A7 due |
35 | Mo Dec 3 | Shell Scripting Files: lecture notes, slides. | |
Course Review | |||
36 | Tu Dec 4 | Course Review
(Monday schedule used) | |
Th Dec 6 | Final Exam (15:30 - 18:30) Dalplex
Final exam, duration 3 hours, starting at 15:30 in Dalplex. Exams schedule URL: http://www.dal.ca/academics/exam_schedule/halifax_campus_exam_schedule.html | F.Exam |