3D Graphics Programming Mira Costa High School - Class Syllabus, 2009-2010 INSTRUCTOR: Mr. M. Williams COURSE GOALS and OBJECTIVES: 1 Learn the fundamentals of the Java language including data types and programming structure. 2 Learn Object Oriented Programming concepts and building programs from sets of objects. 3 Learn programming logic such as decisions, iterations, and software debugging techniques. 4 Program 2d and 3d graphics based on an application programming interface. 5 Program constructs such as arrays, user interfaces, data input/output and exception handling. 6 Prepare for the AP Computer Science A test on May 4, 2010. 7 Learn vocations such as scripting languages of 3d modeling programs, and programming of wireless devices (cell phones). 8 Gain insights into careers and future technologies. OVERVIEW OF COURSE: This year-long course closely follows Java Concepts, 5th edition by Cay Horstman. While nearly all subject matter will be covered, emphasis will include: object-oriented design; 2d and 3d graphics; programming logic; event handling of input & output, data types casting and error-handling; and good software engineering principles. The course will be taught in a computer lab, with each student having access to their own internetconnected computer. Lectures will be interspersed with keyboard time. While students are working on assignments, students are encouraged to ask the Instructor for any assistance, programming help or other issues. New topics require more lecture time initially, but course time will be approximately 1/3 lecture, and 2/3 lab assignments. While there is no substitute for programming experience, and programming assignments will be the best source of learning, tests will occur every two to four weeks. COURSE MAJOR TOPICS 1) Variables, data types, basic programming structure and mathematics. 2) Fundamental constructs of programming: if-then-else statements, for-loops, while-loops. 3) Object Oriented Programming concepts: constructors, encapsulation, events, inheritance, interfaces, methods and polymorphism. 4) Graphical user interfaces such as buttons, select boxes, and scroll bars. 5) Handling keyboard and mouse events including exception handling and data input/output. 6) Integrate the OpenGL application programming interface to build 3d applications. 7) College Board's 'GridWorld' exercises 1 though 4 in preparation for the AP Computer Science A test. 8) Programming of emerging vocations, developing cell phone applications or scripting (programming) of 3d modeling tools. Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 1 of 8
ACTIVITIES, ASSIGNMENTS and GRADING CRITERIA Course will be composed of lectures, in-class assignments, computer programming activities, and major projects. Grading will be based on approximate values (subject to change): Homework 35%; Projects 35%; Quizzes 10%; Mid-Term/Final 15%; Teacher Evaluation 5%. Tests will be approximately every two to four weeks. Late assignments: 20% deduction from the total + 10% per week late after the second week. All homework, tests with programming assignments, and major projects will be graded upon two criteria: 80% of the grade will be based on the actual assignment such as arriving at the correct answer. 20% for style, including: properly commented Java code with a header at the beginning that includes name, date, assignment and a short two sentence description of the project. Style also includes: descriptive variable names; correct indentation of Java code; concise coding with a minimum of repeated code; and proper English. INSTRUCTOR CONTACT INFORMATION: mawilliams@manhattan.k12.ca.us COURSE WEB SITE: http://mchs.virtualbeach.com/3dgp/ PREREQUISITES: Concurrent enrollment or completion of Geometry. OTHER REFERENCE WEB SITES: College Board, AP Computer Science A: http://www.collegeboard.com/student/testing/ap/sub_compscia.html?compscia College Board, AP Computer Science A, GridWorld case study http://www.collegeboard.com/student/testing/ap/compsci_a/case.html?compscia Sun's Java web site: http://java.sun.com Java JDK download: http://java.sun.com/javase/downloads/index.jsp eclipse editor http://www.eclipse.org/downloads/ BOOKS: Horstmann, Cay, Java Concepts. 5 th ed., New Jersey, John Wiley & Sons, ISBN 978-0-470-10555-9 Horstmann, Cay, Big Java. 3rd ed., New Jersey, John Wiley & Sons, ISBN 978-0-470-10554-2 (not used) Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 2 of 8
SCHEDULE (subject to change) Fall Semester: Unit 1: weeks 1, 2, 3; Sept. 2-18 Class introductions Introduction to Java, first program Hello World and print statements Java Compilers and Java Runtime programs. The eclipse development environment. Using debuggers. Introduction to Applets vs. Stand-alone Java programs Objects and Object-oriented programming (on-going) Number data types Basic Graphics Quick Start on programming. Introduce essentials of writing, compiling and running Java. Allowing students the opportunity and instant gratification to post their own Java applets and create some fun graphics. Java Concepts, chapters 1 & 2 GridWorld, Part 1 Unit 2: week 4, 5, 6; Sept. 21 Oct. 9 Designing Classes Constructing Classes Drawing unique shapes Advanced Data Types Arithmetic in Java, including modula Math statements such as increment (i+ +) and decrement (i--) Conversions / round-offs between floating point, double precision and integers. Software Engineering principles in program structure. Reading Input Introduce classes, the main component to object-oriented programming. Learn math and data type constructs to design computational-intensive programs. Learn best-practices in programming to design readable code and best for debugging. Java Concepts, chapters 3, 4 Triangle Area and Perimeter Unit 3: week 7, 8, 9; Oct. 13-30 Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 3 of 8
Decisions: if-then-else statements Differences between = and == and other comparison statements while-loops for iterations of an nonpredetermined length for-loops for iterations of a predetermined length nested loops Random numbers for simulations Arrays, the array object and length property Compare math equations versus strings in if-then-else statement. Write code that makes logical decisions. Learn program flow with for-loops and while-loops. Build applications based on random inputs. Introduce arrays. Java Concepts, chapters 5, 6 & 7.1 GridWorld, Part 2 Unit 4: weeks 10, 11, 12; Nov. 2-20 Introduction of the Date and/or Calendar object Enumerated lists Array Lists: creation, add(), set() Enhanced Array Lists for-loops Two-dimensional arrays Copying arrays Designing Classes Call by Value versus Call by Reference Preconditions/Postconditions and Assertions instead of Exception Handling. Static Methods (such as Math object) & Fields Using 'this' to distinguish variable from this.variable. Packages Demonstrate dynamic programming through iterations and lists in arrays. Learn extended applications of arrays in double arrays and enumerated lists. Demonstrate arrays using the Date and/or Calendar object for days of week and months. Class design and issues with class variables. Java Concepts, chapters 7 & 8 Supermarket Checkout Unit 5: weeks 13, 14, 15; Nov. 30 Dec. 18, 2009 Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 4 of 8
Introduction and Implementing Classes: public and private types, and constructors. Interfaces Polymorphism Events and Event Listeners Graphical User Interfaces Extending a super-class and Inheritance Over-riding a superclass method. Call a super-classes' methods and Constructor. Conversion between Subclass and Superclass Describe functions as a prelude to classes. Detail classes, the implementation of object-oriented programming. Build graphical user interfaces to visually demonstrate the concept of classes. Java Concepts, chapters 9 & 10 GridWorld, Part 3 Unit 6: weeks 16, 17, 18; Jan. 4, 2010 Jan. 22 (end of first semester) Reading and Writing Text Files Throwing Exceptions, Catching Exceptions, 'Finally' clause Designing you own Exceptions such as Divide-by-Zero Mid-Term: January 20 th (tentative) Introduce related topics of GUI, Java Swing, and Event Handling. Read and write text files to save data. Investigate possible errors and how to handle them gracefully. Create our own exception conditions such as divide-by-zero, or users typing in letters where numeric values are required (and vice versa). Java Concepts, chapters 11 Calculator Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 5 of 8
Spring Semester: Unit 7: week 19, 20, 21; Jan. 25 Feb. 12 Software Development Life Cycle Mythical Man-Month theory Class Design Considerations Recursion Permutations Recursion Performance Begin fundamental 3D Graphics Programming with displaying simple objects in a window. Begin new semester with advanced topics of professional software development management.. Learn recursion programs that call themselves. Introduce 3D graphics programming. Java Concepts, chapters 12 & 13 GridWorld, Part 4 Unit 8: week 22, 23, 24; Feb. 22 March 12 Selection Sort Merge Sort Measuring Sorting and Searching performance. 3D Graphics Programming: cameras and lights. Learn tools and optimal ways to search large databases. Add camera and light objects to 3D graphics scenes. Inventory System of perishable vs. nonperishable items. Java Concepts, chapters 14 Unit 9: week 25, 26, 27; March 15 April 9 (off Mar. 29 Apr. 2) Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 6 of 8
Linked Lists Linked List Iterations Stacks and Queues Circular Data structures Binary Tree Structure 3D Graphics Programming: Script programming of 3D modeling programs (tentative) Managing dynamic lists of data. Investigate different types of data structures to represent different ways to manage inventory. Fast methods to search data. Java Concepts, chapters 15 to be determined Unit 10: week 28, 29, 30; April 12-30 Reviews and practices for AP exam 3D Graphics Programming: animation and interactivity Practice for the AP Computer Science A test. Practice 3d graphics development adding interactivity and animation. none Team projects, to be determined Unit 11: week 31, 32, 33; May 3- May 21 AP Computer Science A test, May 4 th 3D Graphics Programming: advanced topics and projects. Possibly Audio with Java Build projects using 3d graphics programming tools. none Team projects to be determined Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 7 of 8
Unit 12: week 34, 35, 36; May 24 June 11 Team projects completed and demonstrated. Final review Finals between June 4 th and June 18 th Students to do individual projects with audio or video as a fun challenge. Team projects on cell phone project or Java Applet continued. Mira Costa High School 3D Graphics Programming/Computer Science 2009-10 syllabus 8/31/2009, Page 8 of 8