ENSC 251: Software Design and Analysis for Engineers


[SW Design Methodology] September-December, 2015

Instructor: Dr. Lesley Shannon
Office: ASB 8819
Home Page: http://www.ensc.sfu.ca/~lshannon

Dr. Shannon's Office Hours:
  • Mondays 12:50-2:30pm
  • Wednesdays 11:45am-12:30pm & 3:45-4:30pm

    Lecture Hours:
  • Mondays: 10:30am-11:20pm, AQ 3182
  • Wednesdays: 10:30-11:20am, AQ 3182 & 2:30-3:20pm, SWH 10081

    Tutorial Hours: Mondays 11:30am-12:20pm, AQ 3182

    Teaching Assitants:
  • Eric Matthews
  • Mohammad Akbari
  • Veronica Cojocaru
  • Yawar Khan
  • Rui Wang



    Engineers are commonly asked to develop software intensive systems, often for non-traditional computing platforms (i.e. not traditional workstations). This course focuses on providing engineers with the fundamental tools and skills needed for designing software applications for various types of computing platforms. This includes an introduction to the abstraction and manipulation of data using data types based on dynamic memory allocation (lists, stacks, queues, and graphs) and the concepts behind complexity analysis and the estimation of program resource utilization. Emphasis throughout will be placed on techniques for: team software design, debugging and verification, and software performance based on type and platform. Software application design examples from the embedded systems area will be used throughout the course to provide context for the material presented herein.

    This course will have a significant lab component with multiple programming assignments and a final project. Although students will work in teams on the lab components of the course, all students are individually responsible for attending and learning the applied skills from the lab and will be evaluated accordingly.

    More information on this course: