Object-Oriented Theory 2 (a.k.a Programming 2) will build on the fundamental programming concepts and techniques encountered in Object-Oriented Theory/Programming I. (Please note that this is not a How to Learn Java in 21 Days class. You should already be familiar with the basics of imperative programming.) This course emphasizes the practical as well as theoretical aspects of object-oriented programming. By the end of the course, students will have had the opportunity to develop the skills needed to write their own software programs and to continue their studies in computer science. The primary language that we will use for the course is Java, but we will look at other object-oriented programming/scripting languages such as: Ada, C++, Perl 6, and PHP.
The course is mainly concerned with three areas of software development:
- understanding the concepts of object oriented design and development
- planning and designing team software projects
- writing code
We will learn about object oriented programming and design, looking at the following major concepts:
Class Schedule (Tentative)
|Week 01: Sep/03||Introduction|
|Week 02: Sep/10||Overview of Programming Languages|
|Week 03: Sep/17||Abstraction & Algorithms|
|Week 04: Sep/24||Libraries & Application Program Interfaces (API)|
|Week 05: Oct/01||Objects (Encapsulation, Composition, Inheritance, Polymorphism)|
|Week 06: Oct/08||Interfaces and GUIs|
|Week 07: Oct/15||Input/Output|
|Week 08: Oct/22||Data Structures & Collections|
|Week 09: Oct/29||Data Structures & Collections 2|
|Week 10: Nov/05||Cryptography|
|Week 11: Nov/12||Threads and Scheduling|
|Week 12: Nov/19||Programming for the Web|
|Week 13: Nov/26||No Class|
|Week 14: Dec/03||Design Patterns and Revisiting Inheritance & Composition|
|Week 15: Dec/10||Final Exam|
|Week 16: Dec/17||Catch up week|
Fall 2009 Syllabus [pdf, 112kb]
Introduction to Java Programming, Comprehensive Version, 7th Edition by Y. Daniel Liang
This is the same textbook that was used last semester for OOT/P 1 - you should already have it! If for some reason you do not already have it the book is available in print from Amazon.
Chapter 2 of this textbook is online, take a look before you purchase.
We will be reading several other essays during the course of the semester to give us a better sense of the practice of programming and software engineering. The readings will likely include:
- Hackers and Painters - Paul Graham
- The Mythical Man-Month - Frederick Brooks
- Cathedral and the Baazar - Eric S. Raymond
- New Methodology - Martin Fowler
- Agile Manifest - various
Some readings will be available through the library course reserve system. (If you do not know how to access them let the instructor know immediately). As a courtesy direct links to their location on the library reserve will often be placed on Studyplace and Sakai.
Slides and Notes
Some of the Slides and Notes regarding the material that is covered in class will be available through Studyplace and a backup will be placed on Sakai under the relevant week. If you have a problem accessing these files please email the instructor immediately. However keep in mind that it is ultimately your personal responsibility to keep notes on everything that is covered in class and not the Instructor's.
- Scratch Sorting Program by ngmr
- Java SE JDK 1.5
- Eclipse IDE and Subclipse (SVN) Plug-In
- Programmer's Text Editor
- An SSH Client
- I would recommend for Windows users Putty
- Mac OS X comes pre-installed with OpenSSH, you do not need to install any additional software.
- An SFTP client
Object-Oriented Theory I (MSTU 4031) or knowledge of a higher level programming language is required to take MSTU 5031. This prerequisite exists to ensure that you have the necessary background to succeed in the course. Please note that if MSTU 4031 is a required course for your program completing MSTU 5031 does not automatically grant you a waiver for MSTU 4031. To satisfy that requirement, you must complete MSTU 4031 or take the proper examination to have that requirement waived.
There will be weekly reading assignments of a technical and non-technical nature. (Approximately 100 pages of reading will be assigned per week.)
Everybody will be expected to spend significant time writing code outside of class. These assignments absolutely will not be accepted late and are due the Wednesday before class (by 11:59PM).
Am I completely serious about the exact second on this deadline? Well, no. You do have some leeway: a few minutes late I probably won't notice, but a whole day late I will definitely notice. If I decide to accept your (late) work, point deductions for lateness may be exacted, but can be waived for unforeseen circumstances, like illness, with an appropriate written excuse. The very best advice I can give you about completing your programming assignments on time is exactly what you'd expect: do not wait until the last minute! Plan several sessions of work for each assignment, and start early. Partial credit is available for partially complete assignments.
Students will work in teams on several occasions to develop a common project. Programming work on projects will replace the weekly homework assignments towards the end of the semester. The projects will integrate all of the topics covered during the semester. Working as part of a development team is crucial to this assignment, so individual projects will not be accepted, no exceptions.
There will be an in-class cumulative final exam on the last or second to last day of class.
You may check your grades through the Sakai portal
Class participation: 15%
This includes in-class coding exercises and class discussion. (Note: This does not only refer to the amount of participation but also to the quality of participation.)
Problem Sets: 20%
Group projects: 15%
Students who intentionally submit work either not their own or without clear attribution to the original source, fabricate data or other information, engage in cheating, or misrepresentation of academic records may be subject to charges. Sanctions may include dismissal from the college for violation of the TC principles of academic and professional integrity fundamental to the purpose of the College. -- from Student Misconduct Policy
For additional help, see the TC Writing Center resources about plagiarism.
Specifically all writing assignments (i.e. your portfolio) must follow the ACM style for citations, including any code examples, technical diagrams, etc. If it is determined that you have plagiarized any portion of a writing assignment, including and especially your portfolio, you will receive an F for the assignment, and other possible charges may result as outlined above.
No portion of your homework should be copied from another student, book, or electronic resource. You are expected, though, to consult with your peers, reference materials, and instructors while working on your coding assignments. Programming is seldom a solo activity and it is often best done in the company of others. If you choose to use existing, third party code in your assignment, it should be including according to the licensing guidelines if it is open source, and should be noted in a comment if it is in the public domain. If it is determined that you copied code directly into your program and represent it as your own creation, you will receive an F for the assignment.
Columbia University Network ID
Teachers College students have the responsibility for activating the Columbia University Network ID (UNI), which includes a free Columbia email account. As official communications from the College e.g., information on graduation, announcements of closing due to severe storm, flu epidemic, transportation disruption, etc. -- will be sent to the student1s Columbia email account, students are responsible for either reading email there, or, for utilizing the mail forwarding option to forward mail from their Columbia account to an email address which they will monitor.
How to Upload Files To StudyPlace
Site to Additional Material and XGrid
About this Page
This page is 15,239 bytes in size and was last edited on Apr/19/2015.