Welcome to EECS2031
Software Tools


Course Description

This course provides an introduction to software techniques in a Unix-style environment, using scripting languages and a machine-oriented programming language (typically C). What goes on in the system when programs are executed? Core topics: Unix environment, shell programming, creating and using software tools, pipes and filters, file processing, processes, system calls, signals.

  • UNIX, UNIX enviroment
  • Shell, Shell Programming
  • C Programming (C Fundamentals, Input/Output, Expressions, Selection Statements, Loops, Types, Arrays, Functions, Pointers, Arrays, Strings, Structures, Dynamic Memory Management)
  • UNIX Programming (Processes, Signals, Pipes)
Lectures & Office Hours

Lectures: Tue and Thu 09:30am-10:30am at CLH E (Curtis Lecture Hall E)

Labs/Tutorial: Tue and Wed 13:00am-15:00pm at LAS 1006 (Lassonde building)

Office Hours: Tue and Thu 10:30am-11:30am at LAS 3050 (or by appointment)


Manos Papagelis (papaggel@gmail.com)

Nastaran Babanejad

Mehedi Hassan

Tilemachos Pechlivanoglou

Nasim Razavi

Xing (Shane) Zhao


The course will rely mainly on the following textbooks.

  • C Programming: A Modern Approach, Second Ed., K.N. King. W. W. Norton and Company, 2008.
  • (Optional) Unix System Programming Second Ed., Keith Haviland, Dina Gray, Ben Salama. Addison-Wesley, 1998.
  • (Optional) The Linux Programming Interface, Michael Kerrisk, No Starch Press, 2010.

Download the syllabus (v1.0)


Lecture 1. Introduction, UNIX, UNIX Environment [Slides]

Introduction, administrivia, introduction to UNIX and UNIX environment.


Lecture 2. Shell and Shell Programming (Part A) [Slides]

Shell, Shell programming.


Lecture 3. Shell and Shell Programming (Part B) [Slides]

Shell, Shell programming.


Lecture 4. C Programming (Part A) [Slides]

Introducing C, C fundamentals, formatted input/output, expressions, selection statements, loops, basic types.


  • King Ch.1 - Ch. 7
Lecture 5. C Programming (Part B) [Slides]

Arrays, functions, program organization, pointers, pointer arithmetic.


  • King Ch.8 - Ch. 12
Lecture 6. C Programming (Part C) [Slides]

Strings, input/output, files, structures, dynamic memory allocation, linked lists, Makefile.


  • King Ch. 13, 15, 16, 17, 22
Lecture 7. Review [Slides]

Brief review of the topics covered.


  • Course textbooks




Software Tools and Libraries

Online resources for working on Microsoft Windows.

  • Cygwin A Unix-like environment and command-line interface for MS Windows
  • PuTTY A free and open-source SSH and telnet client for MS Windows
  • WinSCP A free and open-source SFTP, FTP, WebDAV and SCP client for MS Windows