ECE2524

From Gobblerpedia
Revision as of 02:51, 5 May 2013 by 98.249.7.107 (talk) (ECE2524: Intro to Unix for Engineers)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

ECE2524: Intro to Unix for Engineers

Background

ECE2524 is a course at Virginia Tech that is part of the curriculum for CpE majors. It is intended to expose students to the Unix family of operating systems and cover enough material to allow students who complete the course to comfortably navigate a UNIX environment and know how to find more information on topics and commands they may not be familiar with.

Despite the course's name, the ``Big Picture`` that the course creators saw for the course places it in a sequence with a focus on programming skills:

  1. ECE 1574: Object-oriented engineering problem solving with C++
  2. ECE 2574: Introduction to data structures and algorithms
  3. ECE 2524: Introduction to UNIX for Engineers
  4. ECE 3574: Applied Software Engineering

Of course, Unix and programming go hand in hand, but the official placement and learning objectives set by the department, along with only two 50 minute class periods per week make it a challenge to design course material that fits everyone's needs. The instructor is always open to feedback, criticism and suggestions regarding content, delivery or any other aspect of ECE2524.

Official Linux Distro

Students with no prior experience are expected to run the Ubuntu distribution installed on a separate partition, or within a virtual machine. Students who already have a working Linux distribution installed on their labtops may use the one they are comfortable with.

Off Topics

There are two notable topics continue to be covered in this course because they are critically important but probably belong elsewhere in the ECE curriculum, such as an earlier introduction to programming class:

  1. Version Control (git)
  2. High level programming language (python)


Current Topic List

  1. Introduction
    • Why are you here?
    • What is Unix/Linux and why do we care?
  2. The Shell
  3. Process IO
    • What is a process?
    • What is a file descriptor?
    • System Calls
      • open/close
      • read/write
  4. pipelines and multi programming
    • Concepts
    • System Calls
      • fork/exec
      • pipe/dup
  5. GNU build tools
    • gcc
    • make
  6. regular expressions

Assignments

(Fall 2013 tentative)

  1. Participation (25%)
    • blog
    • twitter
    • in-class activities
  2. Homework (30%)
    • accumulate (bash/Python/C++)
    • todo list manager (python)
  3. Midterm (10%)
  4. Project (35%)
    • groups (2-4 members)
    • source must be made publicly available (preferably via github)
    • only members with logged commits will be credited
    • peer review