EEN218 – Intermediate Computer Programming

3 credits

EE Program: Required

CE Program: Required

IT Program: Required

Catalog Data: Continuation of Programming with emphasis on C++ and the skills required of a capable programmer. Essential data structures and algorithms, and introducing algorithm analysis. Basic sorting, searching, and data management. Dynamic and static memory management. Object oriented programming.
Prerequisite:EEN 118 – Introductory Programming
Course Objectives:This course is designed so that successful students will be able to:
1. / Create complete working programs making suitable use of any of the well known data structures and algorithms.
2. / Make use of the essential features of object oriented programming as provided by C++.
3. / Provide an elementary analysis of the time and space complexity of basic algorithms.
4. / Understand how memory is organised in standard programming languages, and make use of that understanding.
Topics:
1. / Object Oriented Programming and C++:
  1. Classes, objects, and data representation
  2. Class definition, members, methods, and related functions
  3. Constructors and Destructors
  4. Encapsulation, Abstraction, and Implementation hiding (protected, public, common interfaces)

2. / Essential Algorithms and Associated Data Structures:
  1. Essential sorting and searching algorithms
  2. Linked lists: structures and algorithms
  3. Vectors, flexible arrays, bounds-tested arrays, and related structures

3. / Programming Techniques:
  1. Dynamic (heap) versus stack and global memory allocation
  2. Pointer operations, allocation, and arithmetic; arrays as pointers
  3. Pointers to objects, arrays, arrays of pointers, pointers to arrays of pointers: applications
  4. Recursive design of functions and data structures
  5. Advanced input and output processing

4. / Software Engineering:
  1. Structured program development, planned programming, handling larger projects.
  2. Time analysis of algorithms and functions, big-O notation.
  3. Efficiency analysis: memory usage, memory/time/flexibility trade-offs

Class schedule:3 lectures a week / 50 minutes long OR 2 lectures a week / 75 minutes long
Professional Component: Engineering Topics: 3 credits
Students design and implement many algorithms and programs.
Relationship to the CE Program Outcomes: (see note below)
a.(2)an ability to apply knowledge of mathematics, science and engineering in the analysis and solution of computer engineering problems:Students must design and implement programs to solve a variety of real-world problems.
b.(2)an ability to specify, design and conduct experiments, as well as to observe, collect, analyze and interpret data: Debugging programs is essentially designing and observing experiments. When introducing algorithm analysis, students have to collect experimental data on algorithm speed.
c.(4)an ability to design hardware and software systems, components, and processes to meet desired specifications: This is the whole point of the course.
d.(3)an ability to work independently and on peer-comprised and multi-disciplinary project teams: Much independent work is required; basic programming skills are the foundation of a successful team member in computer-related projects.
e.(4)an ability to identify, formulate, and solve computer engineering problems: As for c, the whole course is about identifying and solving problems in programming.
f.(2)an understanding of professional, ethical and social responsibility issues: The importance of correctness, following specifications, and detecting and correctly reporting failures, together with the consequences of not doing so, are strongly emphasized.
g.(1)an ability to communicate effectively both orally and in writing: Students have to be able to explain their work.
h.(2)the broad education necessary to understand the impact of computer engineering solutions in a global and societal context: The consequences of the proliferation of computers and bad programmers are frequently discussed.
i.(3)a recognition of the need for, and an ability to engage in life-long learning: An introductory programming course covering algorithms and data structures really makes it clear that there is no end to things to be learned, and that technology never stands still.
k.(4)an ability to use the techniques, skills, and modern tools used in computer engineering practice: again, the same as c and e.
NOTE: The number in the brackets indicates the scale that is used to relate the class to the outcomes coverage, where: 4=Very strong relationship, 3= Strong relationship, 2=Some relationship, 1=Weak relationship, 0=No relationship and not included above.
Prepared by: / Stephen Murrell 4th March 2006