190 likes | 235 Views
COMP2012H Object-Oriented Programming and Data Structures. Fall 2017. Lectures. Instructor: Long QUAN Lectures: Tuesday & Thursday 11h30am – 1h20pm , room 2404 Web site: ( https://course.cse.ust.hk/comp2012 h) http://www.cse.ust.hk/~quan/comp2012h/index.html Lecture notes
E N D
COMP2012HObject-Oriented Programming and Data Structures Fall 2017
Lectures • Instructor: Long QUAN • Lectures: • Tuesday & Thursday 11h30am – 1h20pm , room 2404 • Web site: • (https://course.cse.ust.hk/comp2012h) • http://www.cse.ust.hk/~quan/comp2012h/index.html • Lecture notes • Assignments, test cases and solutions • Download course material before class • Labs
Textbook • Main book: • ADTs, Data Structures, and Problem Solving with C++, Prentice Hall, Larry Nyhoff • My reference book: • The C++ Porgramming language, Addison Wesley, Stroustrup --- creator of C++
Grading Scheme • Grading is based on • 3 Programming Assignments (8+9+8%=25%) • 11 Lab exercises (10%), 1% each, and the best 10 • Midterm Examination (25%) • Final Examination (40%) • The final has to be consistent with the overall score • If you perform well in the final, you may not fail the course • If you perform poorly in the final, you may not get an A
Plagiarism Policy • 1st Time: both get 0 • 2nd Time: both get 0 + one full downgrade • 3rd Time: FAIL • Midterm or Final: an automatic FAIL You are encouraged to collaborate in study groups. But, you cannot copy or slightly change other students’ solutions or codes. The detection of plagiarism is computerized!
Course Overview • A fundamental computer science course - Essential for programming - Essential for advanced courses • A challenging course, which needs - Mathematical and logic thinking - Programming
Course Prerequisite • COMP104 • Need to know C and C++ • PC programming environment • Good programming skills • Translate pseudo-codes into codes • Speedy review in the 1st week • Basic mathematical skills • Solving recursive equations, manipulation of symbols, etc. • Computer architecture • Pointers, storage, memory access, etc.
Course Outline • C++ review (1 week) • Recursions and algo analysis (1 week) • Sorting (1 week) • Lists (1 week) • OOP1: concept and classes (2 weeks) • Data structures: stacks, and queues (1 weeks) Midterm • Generic programming and STL (1 weeks) • OOP2: inheritance, polymorphism and virtual functions (2 weeks) • Data structure 2: binary trees (2 weeks) • Hashing (1 week)
Overall Goal of the Course • From programmer to architect • Learn to solve problems • Algorithms and Programming go hand in hand • Learn to analyze your solutions
Lecture Format • Lectures: • Slides are available before class • Print in ‘graylevel’ as ‘handouts’!!! • Constantly updated, only minorly!!! • It is important to attend the lectures (because not all material and concepts are covered in slides) • If you miss any lectures, learn from your friends • Labs • Compulsary! • Weekly programming practice • Programming assignments • More rigorous problems to consolidate your knowledge • Manipulation of polynomials • Linked list data structure • Class-based implementation • STL and advanced functions • Bonus? Anything beyond the three assignments
Assignments • Programming assignments • Due by time specified • Run on PC • Submit it using CASS • Re-grade policy will be announced • Late policy : allows only one day late for at most one assignment, 2 days late is not accepted
Midterm and Final Examinations • (Check the schedule with all students!) • Midterm: TBA • Final: TBA • Closed-book, closed-notes • No make-ups will be given • Unless under very unusual circumstances, with letters of proof • Instructor informed beforehand
Programming and languages • Visual Basic • not much structured • C, Fortran, Pascal, • Lisp, scheme, … • Python • interpreted, high-level, efficiency • structural, object-oriented • functional in Lisp tradition, dynamic typing and binding, garbage collection • (JavaScript) • Interpreted, high-level, dynamic, weakly typed, object-based, multi-paradigm • Java • C++ • …
Where are we, and where to go? 2012 1004 Procedural programming, Or structured programming, Or imperative programming (104), modularity (152) OOP (104, 151) (171) Data structure: Linear: list, stack, queue Nonlinear: tree, graph Simple types of variables (variables=objects) 3 program structures (assignment, conditional, iteration) Static objects Dynamic objects Functions on objects (member) variables Array, struct pointer class objects operation (member) functions Algorithms C++, Java C, Pascal Data, variable, object Operation, function, procedure, subprogram, module, method Algorithms+Data Structures = Programs Niklaus Wirth
Programming paradigms • Procedural programming • Functional programming • Object-oriented programming
Procedural programming • An (ordered) sequence of ‘procedures’ or ‘functions’ or meta-instructions • Three instructions • Assignment • Conditional • iteration
procedural programming: main(), is the first function, and is composed of a sequence of ‘procedures’ (or ‘functions’ in C++). Functions communicate by passing parameters. int main() { A a; B b; C c; a.f1(); b.f2(); c.f3(); … } Class A { Int x; Int f1(); } Class B { Int y; Int f2() } Class C { Int z; Int f3(); } int main() { int x,y,z; int a,b,c; a=f1(x); b=f2(y); c=f3(z); … } int f1() { } int f2() { } int f3() { } Object oriented programming: a sequence of ‘objects’! Objects communicate by sending messages.
Math and CS • From ‘calculus’, get ‘programming fundamentals’ • Sequence, dynamic procedure • Euclid a process or an algorithm iteration • Approximation of a real iteratively • ‘bracket’ the solution of a polynomial iteration • Recurrent sequence u_{n+1} = f(u_n) ‘recursion’ • Recurrent sequentce is ‘more expressive’, but no ‘close-form’ solution • ‘convergence’ for math ‘termination’ of a recursive procedure or a loop • Fixed-point theorem important for ‘recursion’ to finish • Invariance proof of correctness of a ‘loop’ • From ‘algebra’, get ‘object-oriented programming’ • ‘algebra’ comes later than ‘calculus’ • About ‘categorization’ • Look for ‘general rules’ for the same objects • Group, ring, and fields: set of elements and operators • element sets class • operators operators
Key concepts in procedural programming • Parameters passing • Scope of variables • Recursions • Algorithm analysis • Sorting algorithms