Object-Oriented Programming 物件導向程式設計
Spring 2024

 Instructor: 劉 興 民                 Head Teaching Assistant 首席助教
Lectures: Tue, Thr 13:15-14:30            王偉曛 asdfg3215740@gmail.com
          工學院A館101教室                工學院A館410室
Office:   工學院A館403室                  分機23153
e-Mail:   damon@computer.org
Phone:    分機33118

The course covers more advanced instructions and those aspects of object-oriented design in C++ / Java / Python language features. Programming using templates, inheritance, abstract classes and polymorphism is presented. Emphasis is on applying object-oriented methodology to software development problems, especially those large and computationally intensive programs.


Readings
  • C++: How to Program, Deitel and Deitel, 7th Edition, Prentice Hall, ISBN: 0-13-611726-0. [Required]
  • Absolute C++, Walter Savitch, 5th Edition, Pearson, ISBN: 0-273-76932-4. [Essential]
  • Effective C++: 55 Specific Ways to Improve Your Programs and Designs, Scott Meyers, 3rd Edition, Addison Wesley, ISBN: 0-321-33487-6. [Reference]
  • More Effective C++: 35 New Ways to Improve Your Programs and Designs, Scott Meyers, Addison Wesley, ISBN: 0-201-63371-X. [Reference]
  • Effective STL: 50 Specific Ways to Improve Your Use of the Standard Template Library, Scott Meyers, Addison Wesley, ISBN: 0-201-74962-9. [Reference]
  • Java: How to Program, Deitel and Deitel, 8th Edition, Prentice Hall, ISBN: 0-13-605306-8. [Reference]
  • Effective Java Programming Language Guide, Joshua Bloch, Addison Wesley, ISBN: 0-201-31005-8. [Reference]
  • Practical Java Programming Language Guide, Peter Haggar, Addison Wesley, ISBN: 0-201-61646-7. [Reference]
  • Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides, Addison Wesley, ISBN: 0-201-63361-2. [Reference]
  • A 2-page and 4-page quick reference sheet for C++.
  • Think Python, Allen B. Downey, 2nd Edition, ISBN: 9781491939369. [Reference]
  • Python for Programmers, Deitel and Deitel, Addison-Wesley, ISBN: 9780135224335. [Reference]
  • Intro to Python for Computer Science and Data Science: Learning to Program with AI, Big Data and The Cloud, Deitel and Deitel, Peason, ISBN: 9780135231364. [Reference]
  • Python Crash Course, Eric Matthes, 2nd Edition, No Starch Press, ISBN: 9781593279288. [Reference]
  • Effective Python: 90 Specific Ways to Write Better Python, Brett Slatkin, 2nd Edition, Addison Wesley, ISBN: 9780134854717. [Reference]
  • Indicative Topics
    1. Object-oriented design
    2. An overview of C++
    3. A crash course in Java / Python
    4. Functions & arrays
    5. Pointers & strings
    6. "const"-ness
    7. Implementing classes
    1. OOP in Java / Python
    2. Operator overloading
    3. Inheritance
    4. Virtual functions & polymorphism
    5. Templates
    6. Graphical user interfaces in Java
    7. Exception handling
    1. Multithreading in Java
    2. Synchronization in Java
    3. Networking for Java
    4. Advanced C++
    5. Effective Java
    6. Design patterns

    Evaluation
    Programming projects [25%]; Midterm [35%]; Final [30%]; Punctuality, attendance, and participation in discussions [10%].
    為鼓勵大學部一年級同學提早修習本科目,對其將採取不同的評分標準: 1) 大一同學的修課人數將獨立,不納入修課總人數來計算; 2) 大一同學的學期個人總成績,將依據其他非大一同學調整之後的分數, 向上再提昇至少2至5分 (但以99分為上限)。
    Cutoff for passing grades at the end of the semester will be the raw score 60 or close to the scale of 45%, depending on which one is lower. Exceptions are sometimes made for classes perceived to be significantly stronger or weaker than the norm. Moreover, please use the discussion board to post general questions about the course. The staff will attempt to answer these questions in a timely manner, but do not hesitate to answer someone else's question if you know the answer. This will count toward "class participation" and your efforts will not be unnoticed.

    Academic Honesty Policy
    All graded materials (examinations and programming assignments) must be strictly individual efforts. Students are encouraged to study together, and to discuss general problem-solving techniques that are useful on assignments. But when working on an assignment, students should not share detailed notes, pseudocode or code, and all work submitted must be done individually. Students are expected to maintain the highest standards of academic conduct. Honest students are frustrated by the unfairness of cheating that goes undetected and therefore unpunished. Students who cheat skew the grading curve in a class, resulting in lower grades for students who worked hard and did their own work. Therefore, if you witness any cheating (in examinations or program assignments) by classmates, please report it to the instructor as soon as possible.

    Course Repository 課業倉儲

    Discussion Board 課程討論區