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:

  1. Apply datatypes, expressions, I/O, Control Flow and Methods in basic Java programs
  2. Demonstrate Object Oriented Programming Concepts in Java programs
  3. Write programs to demonstrate the usage of File I/O API in Java
  4. Demonstrate how to do Graphical User Interface development using Java Server Pages and Servlets
  5. Use the data structures and algorithms in the Collection classes.
  6. Design and create Java Programs to support the error recovery needed for robust programming.
  7. Program thread-safe applications
  8. Learn the basics of Android and application lifecycle.
  9. Create GUI application with Android using UI components, screen and display orientation, events, pictures and menus
  10. Use data persistence, messaging, location and mapping services for Mobile applications.
  11. Use Android's multimedia APIs for Audio, Video and Camera internet resources (HTTP).
  12. Secure, tune, package, and deploy Android applications
  13. 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:

  1. Java Foundations - you will each work individually on developing the same software that builds on your prior versions.
  2. 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:

  1. Java Foundations

    1. Java platform, architecture and history
    2. Language basics (declaring variables, expressions, console input/output, decision making and looping constructs, declaring arrays)
    3. Object Oriented Programming (OOP) (Class, Object, Instance and Static everything, Encapsulation)
    4. Object Relationships (Association, Composition, Inheritance and Polymorphism)
    5. Advanced OOP (Abstract classes, Interfaces, Packages, Scope Management, Polymorphism across same and different Object families using classes and Interfaces, Inner Classes, Generics)
    6. Design Patterns - Overview and Application
    7. Java API - String, StringBuffer, File IO, Reflection, JNI
    8. Exception Handling
    9. Multithreading
    10. Collections
    11. Socket Programming
    12. Web Programming - Servlets and JSPs

  2. Android Application Development
    1. Android architecture and tools (Android Virtual Device, SDK, Android Development Kit)
    2. Android Life-Cycle
    3. Activities and Intents
    4. UI Components, Screen and Display Orientation, Events, Pictures and Menus
    5. Data persistence (Database and Content Providers)
    6. Location and Mapping (Maps, Geocoding and Location-Based Services)
    7. Multimedia (Audio, Video and Using the Camera)

Grading System for the course

Grading Criteria

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:

  • Android Reference: http://developer.android.com/index.htm

    Attendance

    Academic Dishonesty

    Course format and lab assignments

    Submitting your work

  • Grading Criteria (In general)

    Complete programming assignments will be evaluated with consideration given to:

    Additional grading criteria for each assignment may also apply.

    Software

    1. Install the JDK and Eclipse for Java in the first week.
    2. Setup to compile and run simple Java programs from the command-line in the first week.
    3. 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.