Class schedule: Wednesday 9:00-11:00 Thursday 9:00-11:00
Instructor: A. Tamer Ünal ([email protected]) TA: Burak Nur Erdem ([email protected])
Prerequisite(s): CMPE 150 (Introduction to Programming) or equivalent.
The main purpose of this course is to present intermediate programming techniques including basic data structures (arrays, lists, trees, etc.) and fundamental algorithms (sorting, searching, etc.). A major emphasis will be given to object-oriented (O-O) programming in Python language, in relation to O-O Design and O-O Analysis.
Textbook(s) / other required material: There is no required textbook for the class. A compilation of lecture notes will be made available via Moodle.
By the completion of the course, the students will be able to;
- Implement algorithms in Python
- Use debugging tools such as breakpoints, watch windows, call stack
- Understand commonly used data structures such as arrays, linked lists, trees
- Analyze worst-case complexity of algorithms
- Analyze and design complex systems using O-O Analysis and Design concepts
- Understand and draw class, sequence, collaboration and use case diagrams in UML
Considering these objectives, this course mainly addresses the following student outcomes of the industrial engineering undergraduate program;
- Student Outcome (c): An ability to design diverse systems including manufacturing, service, logistics, financial and information, to meet desired needs within realistic constraints such as economic, environmental, social, political, ethical, health and safety, manufacturability, and sustainability
- Student Outcome (e): An ability to identify, model, formulate and solve industrial engineering problems
- Student Outcome (k): An ability to use the techniques, skills, and modern engineering tools necessary for industrial engineering practice.
- Introduction, data types, flow control, program structure
- Functions, parameters, default parameters, recursion
- Class, data hiding, constructors
- Object-oriented analysis I: concepts, UML, class diagrams
- References, dynamic memory, garbage collection
- Inheritance, function overrides
- Object-oriented analysis II: use case, sequence, collaboration diagrams
- Algorithm analysis, arrays, strings
- Linked lists, iterative and recursive algorithms on lists
- Binary search trees
- B-Trees, Hash Tables, Binary search
- List, set, dictionary comprehensions, generator expressions
- Some commonly used packages (e.g. Pandas, NumPy)
- Homework / Quiz: 15%
- Midterm (in-class): 20%
- Project: 40%
- Final (in-class): 25%
Preparing a term project will constitute a major portion of the expected course work. Teams of 2-3 students will be responsible of
- writing a proposal to develop a software in Python,
- writing an analysis report,
- writing a design report,
- and finally, developing the software and the appropriate user documentation.
Each team is required to work independently and create an original software product. Students that do not satisfy this requirement or get excessive help during the project will receive zero as the project grade and will not be allowed in the final exam.