18-641 Syllabus
Course Description
This course provides an intensive exploration of computer programming by reviewing the basics of Object-Orientated programming and moving quickly to advanced programming using design patterns and a multi-tiered architecture. As part of the course work, students will learn smartphone development and how to apply the learned programming techniques to create extensible, reusable and quality software. It is intended for master's students who have had some prior, but perhaps limited, programming experience in Java or another object-oriented programming language; it is not intended as a first course in programming.
The course aims to provide an enduring experience and training in building world class software
with a focus on design patterns, object oriented design, and multi-tier architecture.
Prerequisites:
Graduate Standing; a
previous course in programming or equivalent experience and consent of the
instructor.
Units: 12
Course/Section: 18-641
Objectives:
- Apply datatypes, expressions, I/O, Control Flow and Methods in basic Java programs
- Demonstrate Object Oriented Programming Concepts in Java programs
- Write programs to demonstrate the usage of File I/O API in Java
- Demonstrate how to do Graphical User Interface development using Java Server Pages and Servlets
- Use the data structures and algorithms in the Collection classes.
- Design and create Java Programs to support the error recovery needed for robust programming.
- Program thread-safe applications
- Learn the basics of Android and application lifecycle.
- Create GUI application with Android using UI components, screen and display orientation, events, pictures and menus
- Use data persistence, messaging, location and mapping services for Mobile applications.
- Use Android's multimedia APIs for Audio, Video and Camera internet resources (HTTP).
- Secure, tune, package, and deploy Android applications
- Learn and apply Software Engineering practices in documentation ad design of small and large-sized projects.
Topics
The course is split into two major parts:
- Java Foundations - you will each work individually on developing the same software that builds on your prior versions.
- Android Application Development - you will work on a team-based project of your own choosing and apply SE techniques to develope your software.
Topics for each unit are detailed below:
- Java Foundations
- Java platform, architecture and history
- Language basics (declaring variables, expressions, console input/output, decision making
and looping constructs, declaring arrays)
- Object Oriented Programming (OOP) (Class, Object, Instance and Static everything, Encapsulation)
- Object Relationships (Association, Composition, Inheritance and Polymorphism)
- Advanced OOP (Abstract classes, Interfaces, Packages, Scope Management, Polymorphism
across same and different Object families using classes and Interfaces, Inner
Classes, Generics)
- Design Patterns - Overview and Application
- Java API - String, StringBuffer, File IO, Reflection, JNI
- Exception Handling
- Multithreading
- Collections
- Socket Programming
- Web Programming - Servlets and JSPs
- Android Application Development
- Android architecture and tools (Android Virtual Device, SDK, Android Development Kit)
- Android Life-Cycle
- Activities and Intents
- UI Components, Screen and Display Orientation, Events, Pictures and Menus
- Data persistence (Database and Content Providers)
- Location and Mapping (Maps, Geocoding and Location-Based Services)
- Multimedia (Audio, Video and Using the Camera)
Grading System for the course
Percentage Grade
92 - 100 A indicates exceptional work
90 - 91 A- indicates excellent work
87 - 89 B+ indicates good, above average work
82 - 86 B indicates good, competent work
80 - 81 B- indicates slightly above average work
70 - 79 C indicates average but passing work
60 - 69 D indicates unsatisfactory work
Grading Criteria
- Projects and Assignments from Part 1 (Java) and Part 2 (Team-Project Smartphone App) - 60% of
grade
- Participation and Quizzes - 10% of grade (Note: Piazza is included in participation)
- Final Project (Smartphone App) - 30% of grade
You must have a passing grade (C or better) in each area of evaluation in order to pass the course.
If you are within one percentage point (i.e. 89 or higher, but less than 90), I will consider rounding-up your grade if all of the following are true:
- You have have attended class regularly.
- You have participated in class or via Piazza.
- You have turned in your work complete and on time.
- You have at least a C in all areas of evaluation.
Android Reference:
http://developer.android.com/index.htm
Attendance
- You are expected to attend lectures and are responsible
for completing all work assigned in this class by the posted deadlines.
Academic Dishonesty
- You are encouraged to
discuss the ideas presented in the class, but you must work your solutions
independently, and all assignments and tests must be your own original work.
Copying or cheating of work will result in a failing grade for the course and it will be reported.
- Make sure you are familiar with and follow my Academic Integrity Policies
Course format and lab assignments
- Weekly discussions demonstrating selected concepts using sample programs.
Programming Assignments
- Documenting, coding, testing and debugging major Java programs demonstrating Java
foundation topics - typically one per week.
- Complete a major Java Project where you will add several feature in a series of assignments
starting with Project 1.0.
- Complete a major Smartphone (most likely Android) Mobile
Application in Project 2.
Submitting your work
- Source code, test runs, and any design documentation must be submitted using the given instructions.
- Late assignments will not be accepted. Turn it in on time for at least partial credit, or you will earn a 0.
- You must work on assignment individually. If there is duplication of work (similar assignment or answer submission) it will be considered cheating; a Failing Grade will be assigned on record at the end of semester; and it will be reported to the appropriate CMU administrator(s) that the grade was earned through academic dishonesty.
- You are not allowed to copy things from Internet. In a nutshell, if you write your own code and answer question in your own words, you will be okay. I want to be very clear - I do not tolerate cheating.
Grading Criteria (In general)
Complete programming
assignments will be evaluated with consideration given to:
- Accuracy (does the program solve the computing problem)
- Adherence to Object Oriented Programming and Design Methodology techniques
- Demonstration of expected Design Pattern implementation
- Appropriate Data Structures and Naming
- Documentation
- Timeline (Note: late work is not accepted.)
- Professional Presentation
Additional grading criteria for each assignment may also apply.
Software
- Install the JDK and Eclipse for Java in the first week.
- Setup to compile and run simple Java programs from the command-line in the first week.
- Install the mobile development environment (Android Studio) for the second half of the course in the eighth week.
Please follow installation instructions provided for each platform.
CMU Academic Integrity Policy https://www.cmu.edu/policies/student-and-student-life/academic-integrity.html
The Department of Electrical and Computer Engineering
adheres to the academic integrity policies set forth by Carnegie Mellon
University and by the College of Engineering. ECE students should review fully
and carefully Carnegie Mellon
University's policies regarding Cheating and Plagiarism; Undergraduate Academic Discipline; and Graduate Academic Discipline. ECE
graduate student should further review the Penalties for Graduate Student
Academic Integrity Violations in CIT outlined in the CIT Policy on Graduate Student
Academic Integrity Violations. In addition to the above university and
college-level policies, it is ECE's policy that an ECE graduate student may not
drop a course in which a disciplinary action is assessed or pending without the
course instructor's explicit approval. Further, an ECE course instructor may
set his/her own course-specific academic integrity policies that do not conflict
with university and college-level policies; course-specific policies should be
made available to the students in writing in the first week of class.
Please make sure to read, understand, and follow all posted Academic Integrity policies for this course.
This policy applies, in all respects, to
this course.