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: 

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

  • HW Problems (15 %)
  • Two Mid-Term Exams (50 %)
  • Final Exam (35 %)
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