ECE 114: Introduction to Computers and Programming

advertisement
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)
Download