Object-Oriented Programming: 01-Mahoney F ... Pages Syllabus CSC 2910 Object Oriented Programming Dr. Mark Mahoney Fall 2021 TR 12:30 PM - 2:10 PM o!ce: (262)551-5869 mmahoney@carthage.edu O!ce Hours: DSC192 TR 2:30 PM-4:00 PM W 1:30 PM - 3:30 PM Prerequisites: CSC 1820 Required Books: OOP in Java with Design Patterns (Mahoney) OOP Videos (Mahoney) Optional Books and Resources: - Head First Design Patterns: A Brain-Friendly Guide (Eric Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra) - Design Patterns: Elements of Reusable Object-Oriented Software (Gamma, Helm, Johnson, and Vlissides) Grading Criteria: Homework Assignments: 70% Final Project: 10% Exams: 20% Course Description: This course is an introduction to object oriented programming. We will discuss the three key features of an object oriented language- encapsulation, inheritance, and polymorphism. We will also discuss common object oriented design techniques and patterns. The language we will be using is Java. We will also be learning about the Java runtime environment. Java is a very popular language in industry. It is ideal for client/server computing, web applications, mobile apps, standalone applications, embedded applications and a host of other applications. Java is a pure object oriented language, almost everything in Java is a object. Objects are speci#ed by de#ning classes. The Java language comes with an incredibly rich library of classes. This is called the Java API. This library includes many useful classes that can be reused for free. One of the capabilities that Java provides in the library is a method for building complex GUI's. This is quite a bit di$erent from C++ where each vendor has its own set of GUI classes. Java's API also provides networking functionality that makes it easy to build distributed applications. The Java environment provides multithreading capabilities regardless of the OS. The student is required to have C++ programming experience. I am expecting everyone to be familiar with basic object orientation, and have experience programming in an OO environment. The Java language is very similar to the C++ and the SmallTalk languages. C++ is not a pure object oriented language. One can claim to be a C++ programmer and not use objects. The syntax of Java resembles C++ and the semantics resemble SmallTalk. As such, I am assuming that you can write sequential statements, selection statements, loops and functions in Java before you come to class. If you cannot, drop the class immediately. Java is one of the most well documented programming languages in existence. There are countless resources available on the internet. I am assuming that you are able to search the internet for answers to questions you have about Java. I am also assuming everyone can work with a text editor and debugger. We will be using two methods to write and debug Java programs in this class. We will use a simple text editor like VS Code to write code and the Java compiler and JVM from the command line. We will also use an integrated development environment (IDE). Although the IDE will do a lot of the work for us, it is important that you learn the command line interface as well. There is an incredible demand for professionals in software development. After taking this course one should be able to write applications in the Java language. There are many more capabilities of the Java language that will not be discussed in class, if you are interested I can recommend several resources for you to look at. Objectives: • Develop an understanding of the object oriented concepts of encapsulation, inheritance and polymorphism • Learn about the Java Language and the Java Runtime Environment • Learn how to build Graphical User Interfaces (GUI) • Develop an understanding of how event handling works in Java • Learn basic UML notation (class diagrams, sequence diagrams, state machine diagrams) • Introduction to object oriented design patterns Class/General: We have a lot of information to cover. It is vitally important that every student watch every assigned video at least once before they get to class. This is a di!cult subject that requires reading and practice. If you do not do both, you will not pass this course. I expect the student to come fully prepared to participate in class discussions, ask questions and see me outside of class for help if necessary. This will be a '%ipped classroom'. In a normal classroom, students come to class to hear lectures from the professor and work on homework outside of class. In a COURSES GROUPS RESOURCES Mark Mahoney Syllabus | Schoology https://lms.carthage.edu/page/5205476278 1 of 2 9/8/21, 2:32 PM %ipped classroom, the professor posts video recordings of the lectures that students watch outside of class and class time is used for hands on lab time. I will be providing links to youtube videos and I will expect every student to watch the required videos before class. Youtube has a great feature where you can speed up a video by 1.5 to 2 times its original speed. I highly suggest you speed up my videos (I am a slow talker). Click on the settings (gear icon) in any video and select 'speed' to choose a new speed. I would suggest 1.5 to begin with but you may want to re-watch a video at 2X speed. Computer Lab: I encourage you to bring a laptop computer into class if you have one. However, do not surf the web when you should be working on labs/assignments. The lab machines will have the software needed to write programs but I strongly encourage you to install the software on your personal machine. Class Web Site: I have created a website for this class to better distribute information. The website will provide each student with access to his or her grades, class announcements and other resources. The website can be accessed by going to my.carthage and selecting eLearning. Homework Assignments: I will not accept late homework but I will give partial credit for incomplete work. Zip your entire project folder and send it using the digital drop box. This semester every student will get one 'no questions asked' three day extension and one 'no questions asked' seven day extension for the assignments. Your code must be well commented before I accept it. I will deduct points for uncommented code. Read the requirements for each assignment carefully. Ask questions on any portion that is not clear. Students are encouraged to help each other while learning the material. The exchange of ideas enhances the learning process. However, the #nal product must be your own. Plagiarism of assignments and cheating on exams are not permitted. Any student caught doing so will automatically receive a failing grade. You can #nd the academic honesty guidelines here (https://www.carthage.edu/community-code/academic-concerns/academic-honesty-guidelines/) and the consequences for violating them here (https://www.carthage.edu/community-code/academic-concerns/penalties/). Carthage College strives to make all learning experiences as accessible as possible. If you anticipate or experience academic barriers due to your disability (including mental health, learning disorders and chronic medical conditions), please let me know immediately so that we can privately discuss options. To establish reasonable accommodations, you also need to register with Diane Schowalter in Learning Accessibility Services (dschowalter1@carthage.edu). Syllabus | Schoology https://lms.carthage.edu/page/5205476278 2 of 2 9/8/21, 2:32 PM