14:332:351 - Programming Methodology II

Course Catalog Description: 

14:332:351 - Programming Methodology II (3)
In-depth analysis of algorithms using object oriented techniques. Comparative algorithm analysis, in-depth sorting algorithms, graphs, NP-Completeness, object-oriented design. Emphasis is on programming and practical applications in Electrical and Computer Engineering. Programming languages include C++ and Java.

Pre-Requisite Courses: 

14:332:252 or the equivalent

Pre-Requisite by Topic: 

1. Knowledge of C++ language.
2. Stacks, queues, linked lists.
3. Sorting algorithms.

Textbook & Materials: 

F. Carrano, Data Abstraction & Problem Solving with C++, 5th Ed, Prentice Hall, 2006.

Overall Educational Objective: 

To develop in depth skills in efficient design of algorithms.

Course Learning Outcomes: 

A student who successfully fulfills the course requirements will have demonstrated:
1. advanced programming skills
2. advanced knowledge of algorithms

How Course Outcomes are Assessed: 

  • HW Problems (15 %)
  • Two Mid-Term Exams (50 %)
  • Final Exam (35 %)

  • N = none S = Supportive H = highly related

    Outcome

    Level

    Proficiency assessed by

    (a) an ability to apply knowledge of Mathematics, science, and engineering

    H

    Programming assignments, Exams

    (b) an ability to design and conduct experiments and interpret data

    N

    (c) an ability to design a system, component or process to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability

    N

    (d) an ability to function as part of a multi-disciplinary team

    N

    (e) an ability to identify, formulate, and solve ECE problems

    H

    Programming assignments, Exams

    (f) an understanding of professional and ethical responsibility

    N

    (g) an ability to communicate in written and oral form

    S

    Programming assignments, Exams

    (h) the broad education necessary to understand the impact of electrical and computer engineering solutions in a global, economic, environmental, and societal context

    N

    (i) a recognition of the need for, and an ability to engage in life-long learning

    S

    Programming assignments

    (j) a knowledge of contemporary issues

    N

    (k) an ability to use the techniques, skills, and modern engineering tools necessary for electrical and computer engineering practice

    H

    Programming assignments, Exams

    Basic disciplines in Electrical Engineering

    N

    Depth in Electrical Engineering

    N

    Basic disciplines in Computer Engineering

    H

    Programming assignments, Exams

    Depth in Computer Engineering

    S

    Programming assignments, final project, Exams

    Laboratory equipment and software tools

    H

    Programming environments

    Variety of instruction formats

    S

    Lecture, in-lab lectures, online discussion, online submission, office hour discussions

Topics Covered week by week: 

Weeks 1 & 2:Review of Data Structures portion of PM-I, stacks, queues, linked lists, sorting algorithms
Week 2: Basics of object oriented programming (C++)
Week 3: Standard conversion under derivation, virtual functions, virtual base classes, OO design.
Week 4: Algorithm Analysis, Big-Oh notation, Solution of Recurrence Equations
Week 5: Multiway Search Trees, Top Down Trees, Traversal and Insertion in Top Down Trees
Week 6: MIDTERM EXAM; B-Trees, Search Traversal and Insertion
Week 7: Implementation of algorithms for B-Tree
Week 8: Efficiency of B-Tree and Top Down Trees; B+ Trees and algorithms to implement them
Week 9: Graphs, Adjacency Matrix Representation, Transitive Closure; Transitive Closure using Warshall’s Algorithm
Week 10: Shortest Path Algorithm, Adjacency List representation of Graph, Network Flow Problem and the
algorithm to compute the optimal flow
Week 11: Spanning Forests of Graph, Graph Traversal, Depth First Traversal, Breadth First Traversal
Week 12: Minimum spanning Trees; Introduction to Java
Week 13: Basics of Java
Week 14: Basics of Java
Week 15: Basics of Java
Week 16: Final Examination

Computer Usage: 

Use of C++ and Java to implement advanced algorithms.

Laboratory Experiences: 

Implementation of algorithms in C++ and Java.

Design Experiences: 

Moderate design experience in constructing C++ programs, simple design experience construction Java programs.

Independent Learning Experiences : 

Programming assignments (homework), final lab project

Contribution to the Professional Component: 

(a) College-level Mathematics and Basic Sciences: 0.25 credit hours
(b) Engineering Topics (Science and/or Design): 2.75 credit hours
(c) General Education: 0.0 credit hours
Total credits: 3

Prepared by: 
Y. Zhang
Date: 
June, 2011