Computer Science and Engineering CSE 1384 Intermediate Computer Programming CREDITS/CONTACT HOURS: Credit Hours: 4, Contact Hours: 90 COORDINATOR: Dr. T.J. Jankun-Kelly TEXTBOOKS: Reed & Zelle. Data Structures and Algorithms Using Python and C++. Franklin, Beedle & Associates, 2009. a. Supplemental Material: Online course material available from http://courses.webct.msstate.edu/ SPECIFIC COURSE INFORMATION: a. Catalog Description: Three hours lecture, Three hour laboratory. Object-oriented problem solving, design, and programming. Introduction to data structures, algorithm design and complexity. Second course in sequence designed for CSE, CPE and SE majors. b. Prerequisites: CSE 1284 with grade of C or better c. Required/Elective: Computer Science – Required Software Engineering – Required Computer Engineering – Required SPECIFIC GOALS OF THE COURSE: a. Specific Outcomes of Instruction: 1. To advance understanding of the basic principles of computer programming using the Python and C++ programming languages. 2. To continue to introduce principles and practice of software development using the object-oriented paradigm. 3. To advance understanding of common linear data structures and their complexity 4. To reinforce good software development practice with attention to software quality and with particular emphasis on reusability. b. Criterion 3 Outcomes: Note: Parenthesized list indicates the ABET EAC and CAC outcomes addressed by each performance criteria. 1. Demonstrate the ability to develop an object-oriented solution to a variety of problems using object-oriented principles of encapsulation, modularity, hierarchy and abstraction (EAC: k; CAC: i) 2. Demonstrate an understanding of algorithm complexity analysis (EAC: a; CAC: a) 3. Demonstrate the ability to develop and carry out a basic test plan for a software product (EAC: b, c, k; CAC: c,i) 4. Demonstrate the ability to use object-oriented programming techniques including inheritance, overloading, and polymorphism and generic programming (EAC: c,e,k; CAC: b,c,i ) 5. Demonstrate the ability to implement and use common linear data structures (EAC: k; CAC: i,j) 6. Demonstrate the ability to analyze and apply common searching and sorting algorithms (EAC: a, b; CAC: a,j,k) TOPICS COVERED: Lecture (Number of class hrs) 1. Introduction to the course 1 2. Algorithm complexity. Run-time analysis using Big-Oh notation 5 3. Classes, inheritance, operator overloading, polymorphism 7 4. Static vs. dynamic memory management. References, pointers and dynamic arrays 3 5. Introduction to linked lists 7 a. Insertion b. Deletion c. Traversal, iterators d. Implementations e. Complexity analysis 6. Stacks and Queues 4 a. Static vs. dynamic implementation b. Implementations c. Complexity analysis 7. Recursion 5 8. Advanced searching and sorting 3 9. Exceptions 2 10. Interpreted vs. compiled languages 5 11. Exams 3 Laboratory (Number of lab weeks) 1. Lab orientation; familiarization with use of editors, interpreter, and debuggers; submission process and grading. 1 2. Writing functions. 1 3. Finishing a basic class 1 4. Linked lists 2 5. Stacks 1 6. Queues 1 7. Recursion 1 8. Searching and sorting; complexity analysis 1 9. Introduction to compilers; basic compiled programs 1 10. Organizing information and action using classes 3 11. Using pointers and dynamic memory. 2