ECE 114: Introduction to Computers and Programming Instructor: Prof. Michael Huang, CSB 414, Office hours (3-4:30pm, Th) Recitations: Fridays 12 noon – 12:50pm (important supplements and lab problem hints) Course Descriptions/Objectives: Synopsis: Introduction to the principles of well-structured and efficient programming using C++ Extended statement of goals: Modern day engineering disciplines often require computer programming to carry out simulation, modeling, data gathering, analysis, and so on. The goal of this class is to combine the central and fundamental part of knowledge and training from several computer science courses to help foster a productive and effective programming methodology. Topics covered: 1. Brief introduction to computer organization, architecture, operating systems, and programming mechanics 2. Introduction to algorithm and complexity (searching and sorting, e.g., binary search, insertion sort, etc.) 3. Object-oriented programming (OOP) philosophy, principles, and mechanisms (encapsulation, abstraction, inheritance, and polymorphism) 4. Programming language fundamentals (keywords, conditional flow control, iteration, function invocation, parameter passing, recursion, typing, scope, and memory management) 5. OOP with C++ (class, member function and variables, constructor, destructor, function overloading, virtual functions, standard template library – STL, and very briefly exception handling, templates, operator overloading) 6. Data structure primer (linked list, queue, tree, stack, hash table) Topic NOT covered (in detail): Software engineering formalism; advanced topics in data structure and algorithms; unimportant idiosyncrasies or legacy and advanced language features (e.g., unions, friends, etc.) In summary, we want to make students a good beginner programmer with an excellent programming principle and methodology and sufficient knowledge and experience of the C++ language. Textbook: Small C++ How to Program, 5th Edition, Deitel & Deitel, Prentice Hall, 0-13-185758-4 (or the more complete “C++ How to Program”, 5th Edition, Deitel & Deitel, Prentice Hall, 0-13-185757-6) Compared to the more complete version, “small” has the following: Benefits: (1) It nicely removes some subsections that are unimportant (and note dealt with in ECE114). For most of the reading material we use, it’s the exactly the same as the complete version. (2) It is less expensive and much easier to carry. Problems: (1) Three chapters (Ch. 20 Searching and Sorting, Ch. 21 Data Structures, and Ch. 23 STL) that we will touch upon are missing from this version. For a few topics involving these chapters, the lecture does not follow these chapters, but they are a nice reading supplement. (2) A lot of materials useful as reference in the future are not present (half of the text book is cut). Importance of Labs: This is a lab-heavy course. Programming can only be learned through practicing. Students will have to write a lot of code, thousands of lines perhaps, and should be prepared to spend a lot of time writing code and debugging. Academic honesty: Any form of dishonesty (especially copying from standard solutions given in a prior year) in an assignment results in a grade of 0 in that assignment plus a severe penalty. Repeated behaviors will be reported to the University’s Academic Honesty Board. Grading: 55% lab, 10% homework, 15% pop-quizzes, 10% midterm, 10% final, 5% participation and discussion. (A total of 5% extra credit.) Attendance is required in lecture, recitation, and lab. We will not collect attendance sheet session-by-session, but attendance is reflected in the 5% participation and 15% pop-quizzes. Grading policy: Our primary job is to help you learn skills and knowledge and we dislike rigid rules as much as you do. Past offerings of the course gave us insights into the tradeoffs of rules. So the following rules are applied. Please note there is at least 10% extra credit built in so that occasional human mistakes and understandable circumstances are well tolerated. Overall, on the scale of 100, you can earn more than 120 points. So no exceptions will be made. 1. Deadlines are enforced by the Blackboard classware system. So don’t wait. 2. You can submit up to 72 hours late. After that, no submission will go through. 3. The first three late submissions are not penalized. Starting from the fourth, late submissions receive 15% reduction in grade (adjusted at the end of the semester). 4. Quizzes are unannounced and explained immediate afterwards. 1 out of the 6 is essentially extra-credit. No makeup quiz will be given. Course Calendar/Schedule No. Date 2008 (reference) 1 1/17 Lecture 0: Introduction to Computers and ECE 114 2 1/22 Lecture 1: Getting Started: Writing Simple Programs Using C++ 3 1/24 Lecture 2: OOP Fundamentals: Introduction to Classes and Objects 4, 5 1/29, 31 Lecture 3: Control Statements 6–8 2/5, 7, 12 Lecture 4: Functions and Recursion 9, 10 2/14, 19 Lecture 5: Arrays, Vectors, Searching, and Sorting 11, 12 2/21, 26 Lecture 6: Pointers 13 2/28 (buffer) 14 3/4 Lecture 7: Classes and Member Elements 15 3/6 In-class midterm 16 – 18 3/18, 20, 25 Lecture 7: Classes and Member Elements 19 – 23 3/27, 4/1, 3, 8, 10 Lecture 8: Inheritance, Polymorphism, Operator Overloading*, and Templates* 24 – 26 4/17, 22, 24 Lecture 9: Data Structures and Introduction to STL 27 4/24 Lecture 10: Mixed Language Programming 28 4/29 Lecture 11: Exception Handling* Content Friday 5/11, 9-11:30am Final Exam (Comprehensive) Recitation sessions Fridays noon – 1pm (cont)