CISC 220 Section 2 : System-Level Programming Fall 2016

caution-sign This course site is only for CISC 220 Section 2 students!!! If you are looking for Section 1 website taught by Prof. Margaret Lamb, please go to http://courses.caslab.queensu.ca/cisc220a/
caution-sign You CAN NOT switch sections as your grades are only with the professor of the section you are registered in on SOLUS.

 

onq This page is intended only to provide general information about the course. Please login to your onQ course page for the Course updates, Slide Notes, Assignments, Online Quizzes, Course Forum and Grades.

Course Purpose:

This is an introductory computer course offered in the Fall term by the Queen’s University School of Computing. It covers topic like basic concepts of Unix-like systems, shells and scripting and system-level programming in the C language. These topics gives you the foundation of system-level concepts required by subsequent computing courses.

Topics covered in this course are essential for Software developersSystem Administrators and Network Administrators.

Learning Outcomes:

After finishing this course, you should be able to:

  • Use the bash shell to create files and run programs, including the use of multiple processes, pipes and I/O redirection.
  • Write short scripts using the Unix-like shell, including the use of variables, conditionals, loops, arithmetic, pipes and command substitution.
  • Use version control and other backup techniques.
  • Write small C programs (up to 100 lines) including the use of pointers, strings, structs and file I/O.
  • Demonstrate good memory management in C programming, avoiding both dangling pointers and memory leaks.
  • Make simple use of multiple processes in C programs.
  • Use “make” or a similar tool to build and maintain programs involving multiple modules and scripts

Lectures:

Time slot 02, in Jeffrey 118

Monday          9:30-10:20     [No class on Mon, Oct 10th -> Thanksgiving]
Wednesday    8:30-9:20
Thursday       10:30-11:20

Instructor and Teaching Assistants:

Name Email Address Office Office Hours
Instructor  Shadi Khalifa  khalifa@cs.queensu.ca   Goodwin 633 Mon. 10:30 – 12:00

Wed. 10:30 – 12:00

By Appointment*

Teaching Assistants Susan Hwang  susan.hwang@queensu.ca  Sutherland Hall     Room 512  Tuesday 1:00 – 2:00
Christian Mellows  14cpm@queensu.ca   Goodwin 633  Thursday 1:30-2:30

*Shadi Khalifa: I try to answer all student e-mail within 24 hours during the term except that I don’t always check e-mail on weekends.

Course Policies:

  • Requests for additional work to boost an unsatisfying grade will be denied.
  • No retakes for online and written quizzes.
  • Any question having to do with grades is to be directed to the instructor, and NOT to a TA.
  • Marks will be reported on OnQ, as they become available.
  • I will not answer any quiz related emails 48 hours before a quiz. So study early to be able to ask me if you are facing problems.
  • Please don’t email me or any of the TAs asking for debugging help. Better stop by our offices in the office hours and do the debugging on your PC to make sure the problem can be replicated.

Resources:

We will be using multiple resources in this course, some of which are publicly available online for free.

The_C_Programming_Language_cover.svg However, if you like having a text book to study from, I would recommend “The C Programming Language” by Brian Kernighan and Dennis Ritchie 2nd edition.

Available at the Queen’s bookstore: http://www.campusbookstore.com/Textbooks/Course/17121-CISC220-FALL16

A Kindle softcopy is also available: http://goo.gl/gZPUew

LecNotes  

We will be also using the Lecture Notes developed by Prof. David Lamb

Available here: http://cs.queensu.ca/home/dalamb/teach/LinuxAndC/LinuxAndC.pdf

Co-/Pre-Requisites:

  • This course is to be taken concurrent with or subsequent to CISC 124.

Programming Languages:

  • Bash Shell Scripting: At the beginning of the term, we will be learning about the Linux operating system and how to interact with it using the “bash” shell (a scripting language). We will also be writing some simple bash scripts.
  • C programming language: Later on, we will also be using the C programming language. No prior knowledge of C is assumed, but we do assume that by that time students are familiar with basic Java syntax from CISC 124, which means we don’t have to spend much time on the parts of C that are very similar to Java.