Upload
brett-tucker
View
215
Download
0
Embed Size (px)
Citation preview
Instructor & TA
• Instructor– J. H. Wang (王正豪 )– Assistant Professor, CSIE, NTUT– Office: R1534, Technology Building– E-mail: [email protected]– Tel: ext. 4238– Office Hour: 9:00-12:00 am, every Tuesday and Wed
nesday
• TA– Mr. Wang (王欣陽 )– R1424, Technology Building
Course Overview• Course: Object Oriented Programming (FIT-II)• Time: 13:10-16:00pm, Tuesday• Place: R503, 3rd Teaching Building• Textbook: Absolute C++, 4th edition, by Walter Savitch, Addison-We
sley, 2010. (開發 )– The 3rd edition is also acceptable (5th edition not yet available)
• References: – C++ How to Program, 8th edition, by Harvey Deitel and Paul Deitel, Pre
ntice Hall, 2011.– C++ Primer, 4th edition, by Stanley B. Lippman, Josee Lajoie, and Barb
ara E. Moo, Addison-Wesley, 2005. (5th edition not yet available)– The C++ Programming Language, 3rd edition, by Bjarne Stroustrup, Addi
son-Wesley, 1997.• Prerequisites:
– Basic computer skills (FIT-I basic)– Working knowledge of high-level programming languages such as C (FI
T-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 s
ubmitted to the TA online at:• http://140.124.183.39/oop/
– 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, method
s, 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>=2
F0 = 0, F1 = 1
• How to program?– (The following examples are adapted from
Wikipedia.)
Examples (2/5)
• Functional: (Haskell)– fib 0 = 0
fib 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 b
ias 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
• 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” approac
h• “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