260 likes | 366 Views
Object Oriented Programming (FIT-II). J. H. Wang Feb. 24, 2014. Instructor & TA. Instructor J. H. Wang ( 王正豪 ) Associate Professor, CSIE, NTUT Office: R1534, Technology Building E-mail: jhwang@csie.ntut.edu.tw Tel: ext. 4238 Office Hour: 9:00-12:00 am, every Tuesday and Thursday TA
E N D
Object Oriented Programming (FIT-II) J. H. Wang Feb. 24, 2014
Instructor & TA • Instructor • J. H. Wang (王正豪) • Associate Professor, CSIE, NTUT • Office: R1534, Technology Building • E-mail: jhwang@csie.ntut.edu.tw • Tel: ext. 4238 • Office Hour: 9:00-12:00 am, every Tuesday and Thursday • TA • Miss Liu (at R1424, Technology Building) • Available time: 13:00-15:00pm, every Monday, Tuesday, or Friday
Course Overview • Course: Object Oriented Programming (FIT-II) • Time: 9:10-12:00am, Monday • Place: R413, Network Center • Textbook: Absolute C++, 5th edition, by Walter Savitch and Kenrick Mock, Addison-Wesley, 2012. (開發) • The 3rd or 4th edition is also acceptable (with minor changes) • References: • A good blog for OOP, by Prof. Y. C. Cheng (in Chinese) • C++ Primer, 5th edition, by Stanley B. Lippman, Josee Lajoie, and Barbara E. Moo, Addison-Wesley, 2012. • C++ How to Program, 8th edition, by Harvey Deitel and Paul Deitel, Prentice Hall, 2012. • The C++ Programming Language, 3rd edition, by Bjarne Stroustrup, Addison-Wesley, 1997. • Prerequisites: • Basic computer skills (FIT-I basic) • Working knowledge of high-level programming languages such as C (FIT-I pro)
Target Students • For those who • Might NOT major in CSIE but are interested in programming techniques, and • Have accomplished the courses in software engineering track: FIT-I basic & FIT-I pro, and • Are willing to prepare for intermediate and advanced software engineering courses
Emphases of Teaching • Basic concepts of the object-oriented programming paradigm • Hands-on experience of C++ programming skills • Introduction to problem solving techniques, basic data structures and algorithm design
Teaching • Lectures • Quiz • About 2 quizzes • During the first month • Homework and program assignments • About 5 assignments • Homework should be turned in within two weeks • Mid-term and final exam
(Tentative) Grading Policy • Homework and program assignments: ~40% • Quiz: ~10-15% • Midterm: ~20-25% • Final exam: ~25%
Goal • Introducing object-oriented programming concepts • Fundamental constructs in OOP with C++ • Practicing programming skills • Basic concepts: encapsulation, polymorphism, … • Preparing for advanced courses • Application software design & object-oriented problem solving • Software engineering & project management
Tentative Schedule • Organization of the textbook • Review of computer programming (3-4 wks) • Overview of Object Oriented Programming • Ch. 1-5: programs, functions, parameters, flow of control, arrays, structures • OOP (focus) (10-12 wks) • Ch. 6-8: classes, constructors, friends, references • Ch. 9, 10, 12: More constructs: strings, pointers and dynamic arrays, streams and file I/O • Ch.14: Inheritance • Ch.15: Polymorphism • Generic programming (optional) (2 wks) • Ch. 16: templates • Ch. 17: Standard Template Library
Tentative Schedule (Cont’) • Schedule • Basically, 1 or 2 weeks per chapter • The tentative schedule is subject to changes based on the learning status • Course Web Page: http://www.ntut.edu.tw/~jhwang/OOP/ • Please check the latest announcements, homeworks, exams, …
Program Development Environment • Free C++ Development Environments • GCC on Linux/UNIX servers (ntut.edu.tw) • Not friendly for beginners • Windows-based • Dev C++ (http://www.bloodshed.net/devcpp.html): not maintained • For further development, please check Orwell’s Engine (http://orwellengine.blogspot.com/ ) • Other choices: wxDev-C++ by Colin Laplace et. al. • Cygwin (http://www.cygwin.com/): UNIX-like emulation on Windows • MinGW (http://www.mingw.org/) • Commercial tools • Microsoft Visual C++ • Borland C++ • …
Homework Submission • Online submission instructions • Programs and homeworks in electronic files must be submitted to the TA online at: • Submission site: (TBD) • Before submission: • User name: Your student ID • Please change your default password at your first login • If the submission website fails, the NTUT Network Campus might be used for homework submission
Programming Paradigms • Low-level vs. high-level programming languages – relative • Machine vs. human • Styles of computer programming • Procedural programming • Object-oriented programming • Functional programming • Logic programming • …
Low-level vs. High-level Programming Languages • Low-level: • Machine code • Assembly • High-level: (abstraction from the computer details) • Basic, C, Java, Pascal, C++, Perl, Python, …
Styles of Computer Programming • Procedural programming • Imperative: procedures, routines, subroutines, methods, or functions • Object-oriented programming • Functional programming • Mathematical functions • E.g. Lisp, Erlang, Haskell, … • Logic programming • Logic: facts, rules • E.g. Prolog • …
Examples (1/5) • Fibonacci numbers • Fn = Fn-1 + Fn-2 , n>=2F0 = 0, F1 = 1 • How to program? • (The following examples are adapted from Wikipedia.)
Examples (2/5) • Functional: (Haskell) • fib 0 = 0fib 1 = 1fib n = fib (n-1) + fib (n-2) • Orfib first second = first : fib second (first+second)fibonacci = fib 0 1main = print (fibonacci !! 10)
Examples (3/5) • Procedural: (C) • int fib(int n){ int first = 0, second = 1; for (int i=0, i<n; i++) { int sum = first+second; first = second; second = sum; } return first;}
Examples (4/5) • Assembly: (in x86 using MASM syntax) • mov edx, [esp+8]cmp edx, 0 ja @f mov eax, 0 ret @@: cmp edx, 2 ja @f mov eax, 1 ret @@: push ebx mov ebx, 1 mov ecx, 1 @@: lea eax, [ebx+ecx] cmp edx, 3 jbe @f mov ebx, ecx mov ecx, eax dec edx jmp @b @@: pop ebx ret
Examples (5/5) • Machine code: (a function in 32-bit x86) • 8B542408 83FA0077 06B80000 0000C383 FA027706 B8010000 00C353BB 01000000 B9010000 008D0419 83FA0376 078BD98B C84AEBF1 5BC3
OOP: Basic Concepts • Encapsulation • Object • Instance of class • Members • Attributes • Methods • Abstraction • Composition • E.g.: car • Inheritance • E.g.: Lassie the Dog, a Collie • Polymorphism • Many meanings for one function
OOP: Why C++? • OO programming language: Why C++? • C++: general purpose programming language with a bias towards systems programming that [from Bjarne Stroustrup’s homepage] • Is a better C • Supports data abstraction, object-oriented programming, and generic programming • C++ has • Many users • Wide applications • Others: Smalltalk, Java, …
Some Comparisons • Three parts in C++ • Low-level language: largely inherited from C • Data types, flow of control, functions, arrays, pointers, … • Advanced language features: to define our own data types (major difference) • Class, inheritance, polymorphism, template, exception, … • Standard library: some useful data structures and algorithms • Containers, iterators, …
Differences among some textbooks • C++ How to Program: “early objects” approach • “late objects” approach also available • C++ Primer: “early objects”, covering basics and library together • Absolute C++: intermediate • The C++ Programming Language: “The Bible”, as a reference
How to Prepare Yourself? • Practice, practice, practice… • Exercises on textbooks and reference books • Online resources: programming exercises, forums, … • Programming contests • ACM ICPC (International Collegiate Programming Contest) • IOI (International Olympiad in Informatics) • Domestic: e-tutor, … • …