Summer 2018 - ENSC 251 D100

Software Design and Analysis for Engineers (4)

Class Number: 1112

Delivery Method: In Person

Overview

  • Course Times + Location:

    May 7 – Aug 3, 2018: Mon, 8:30–10:20 a.m.
    Burnaby

    May 7 – Aug 3, 2018: Wed, 8:30–10:20 a.m.
    Burnaby

  • Exam Times + Location:

    Aug 13, 2018
    Mon, 3:30–6:30 p.m.
    Burnaby

  • Prerequisites:

    CMPT 128 or CMPT 135 or (CMPT 125 and CMPT 127).

Description

CALENDAR DESCRIPTION:

Fundamentals for designing and implementing modular programs using a modern object-oriented programming language with a focus on understanding the performance implications of design choices on non-traditional computing platforms. Lecture topics include: classes; objects; debugging, testing & verification; design analysis & abstraction; error handling; fundamental data structures such as lists, trees, and graphs; and big-0 complexity analysis.computing platforms. Lecture topics include: classes; objects; debugging, testing & verification ; design analysis & abstraction ; error handling; fundamental data structures such as lists, trees, and graphs; and big-0 complexity analysis.

COURSE DETAILS:

Topics:

1. Object Oriented Programming with C++
2. Dynamic Memory Allocation
3. Debugging, Testing and Verification
4. Introduction to Set Theory and Complexity of Algorithms
5. Recursion
6. Pointers and Linked Lists
7. Custom Data Types
8. Code Robustness and Error Handling
9. Functions and Relations
10. Profiling and Code Performance
11. Unit Tests, Code coverage
12. Abstraction and Inheritance
13. Complex Data Structures (Trees and Graphs)
14. Proofs
15. Complexity analysis

Student Learning Outcomes:

Upon satisfactory completion of the course students will be able to:

A. Given a computing problem, students should be able to: 1) analyze the problem, 2)
develop a computing solution that includes the selection of appropriate data types and
algorithms, 3) develop a test plan that will successfully verify their proposed solution, 4)
implement the computing solution with a cohesive system metaphor, and 5) provide a
quantitative verification that their solution is functional.

B. Understand that the execution speed of an application is tied to both their compute
platform and the data types they use. They will know how to profile software execution
to detect bottlenecks and be able to recommend design changes to improve performance.

C. Students will be comfortable using object-oriented programming models.

D. Able to manage and manipulate data stored in dynamically/statically allocated structures,
while properly selecting the appropriate data structure(s) for their application

Grading

  • Labs 20%
  • Assignments 15%
  • Midterm Exam 20%
  • Final Exam 40%
  • Participation 5%

Materials

REQUIRED READING:

Rosen, Kenneth. Discrete Mathematics and Its Applications, Seventh Edition. New York, NY: McGraw Hill, 2012.

Sedgewick, Robert and Kevin Wayne. Algorithms, 4th edition, Addison-Wesley, 2011

Horstmann, Cay and Timothy Budd. Big C++, 2nd edition
http://horstmann.com/bigcpp.html

Registrar Notes:

SFU’s Academic Integrity web site http://students.sfu.ca/academicintegrity.html is filled with information on what is meant by academic dishonesty, where you can find resources to help with your studies and the consequences of cheating.  Check out the site for more information and videos that help explain the issues in plain English.

Each student is responsible for his or her conduct as it affects the University community.  Academic dishonesty, in whatever form, is ultimately destructive of the values of the University. Furthermore, it is unfair and discouraging to the majority of students who pursue their studies honestly. Scholarly integrity is required of all members of the University. http://www.sfu.ca/policies/gazette/student/s10-01.html

ACADEMIC INTEGRITY: YOUR WORK, YOUR SUCCESS