MSTU 5031 Fall 2008

From Studyplace

Jump to: navigation, search


Object-Oriented Theory 2


UNDER CONSTRUCTION

Overview

Programming II will build on the fundamental programming concepts and techniques encountered in Programming I. This course emphasizes the practical aspects of 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 programming. This course is taught in Java, but the concepts covered will serve students interested in learning and developing expertise in other languages.

The course is mainly concerned with three areas of software development:

  1. understanding the concepts of object oriented design and development
  2. planning and designing team software projects
  3. writing code with the Java programming language

We will learn about object oriented programming and design, looking at the following major concepts:

  • Abstraction
  • Objects
  • Encapsulation
  • Composition
  • Inheritance
  • Polymorphism


Class Schedule

asdasdasdasd
  1. Sep/4 Introduction & Java Basics 1
  2. Sep/11 Java Basics 2
  3. Sep/18 Abstraction
  4. Sep/25 Strings
  5. Oct/2 Objects
  6. Oct/9 Dates
  7. Oct/16 Composition & Inheritance
  8. Oct/23 Lists, Maps, and Generics
  9. Oct/30 Listeners and Layouts
  10. Nov/6 Recursion
  11. Nov/13 Java GUIs
  12. Nov/20 Polymorphism & Interfaces
  13. Nov/27 No Class
  14. Dec/4 Model-View-Controller
  15. Dec/11 Project Lab
  16. Dec/18 Project Presentations


Course Materials

Required Text

Eckels, B. (2006). Thinking In Java, 4th ed. Upper Saddle River, New Jersey: Prentice Hall.

This text will be the main reference and source of technical readings used in this course. It is available in print (~$40) and electronic versions ($25); either is acceptable for the class. While you are waiting for your copy, you can begin the readings using the free download of the first 7 chapters. Older versions are not acceptable as they don't cover recent changes to the Java language.

Other Readings

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.


Software

We will be using the following software tools for the course:

SVN Plug-in


Assignments

Weekly Reading

There will be weekly reading assignments of a technical and non-technical nature.

Programming Homework

Everybody will be expected to spend significant time writing code outside of class. Homework assignments will offer students the opportunity for further practice with the concepts covered in class. They will help to develop expertise in writing Java and allow the instructor to gauge individual and group progress. These assignments absolutely will not be accepted late and are due at the beginning of each class.

Class Presentation

Everyone will be expected to present two times during the course of the semester. Presentations will be on either one of the programming concepts or one of the non-textbook readings.

Group Project

Students will work on teams of no less than 4 to develop a common project. Programming work on this project will replace the weekly homework assignments later in the semester. The project will integrate all of the topics covered during the semester, but the content/design of the project is up to the group. Working as part of a development team is crucial to this assignment, so individual projects will not be accepted, no exceptions.

Final Exam

Your will be required to either turn in a final portfolio (paper) or take home exam. You will inform the instructor of your choice with 3 weeks remaining in the semester.

Programming Portfolio

Using the code that they work on throughout the semester, students will create a portfolio illustrating their understanding of the core programming concepts covered in the course (see abstraction, encapsulation, etc. above). For more information, see the Programming Portfolio page.

Programming Exam

You will be given two weeks to work on significant programming problem if the instructor's choice. The program will be of medium complexity and is constructed to require between 10 and 20 hours of programming time to complete. Once you see the question, you cannot choice to turn in a portfolio instead. You will not be required to create a Swing GUI as part of the exam, but you will be required to use part of the Java API that we have not used in class -- you should feel very comfortable using the Java tutorials and Javadoc for the built in Java classes.

Your exam will be graded on the following criteria:

  • completeness: does it meet the specification without bugs? does it do so under all circumstances?
  • abstraction: does the program take advantage of useful abstractions? does it divide the problem space appropriately?
  • objets and classes: do the objects capture the problem space?
  • encapsulation: does the program provide strong encapsulation? would it be easy to extend? is the API clear and useful?
  • composition and inheritance: does the program make good use of these tools where appropriate?
  • polymorphism: does the program take advanatage of polymorphism to provide an elegant solution?
  • elegance: is the code clear and easy to understand? are algorithms efficient and comprehensible?
  • testing: you must turn in an automated test for the program

Grading

Class participation: 20%

This includes in-class coding exercises, class discussion, and the class presentation.

Homework assignments: 20%

Homeworks will be graded on a 4 point scale (0-4):

  • 0 - you did not turn it in (on time)
  • 1 - minus: your code does not compile or there are major bugs in the program
  • 2 - check: your solution provides a basic solution to the problem, but does not handle all cases, is very poorly formatted, or offers an odd, difficult to follow solution
  • 3 - plus: your program meets all of the requirements of the assignment, is neatly formatted, and is written clearly and concisely

Your homework grade will be the result of total points/total possible points. For example, if there are 10 assignments, you will have a possible of 30 points. Your grade will be your actual points earned divided by the total points.

I will throw out your lowest non-zero grade when doing the calculation. Therefor someone with grades {3,3,3,2,2,3} would become {3,3,3,2,3} earning 14/15 possible points e.g. 93%

Group project: 30%

Final: 30%

Academic Integrity

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

Written Work

Specifically all writing assignments (i.e. your portfolio) must follow APA 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.

Java Code

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.

For additional help, see the TC Writing Center resources about plagiarism.

How to Upload Files To StudyPlace

Instructions

Personal tools