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



    Proficiency assessed by

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


    Programming assignments, Exams

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


    (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


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


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


    Programming assignments, Exams

    (f) an understanding of professional and ethical responsibility


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


    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


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


    Programming assignments

    (j) a knowledge of contemporary issues


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


    Programming assignments, Exams

    Basic disciplines in Electrical Engineering


    Depth in Electrical Engineering


    Basic disciplines in Computer Engineering


    Programming assignments, Exams

    Depth in Computer Engineering


    Programming assignments, final project, Exams

    Laboratory equipment and software tools


    Programming environments

    Variety of instruction formats


    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
June, 2011