COMP 2601-A (HP 4125)
Tue. and Thu. 2:35 pm-4:25 pm
Tony White
arpwhite at(@) scs.carleton.ca
HP 5354, 520-2600 x2208
Office Hours: Tue. and Thu. 1:30 pm-2:30 pm
The TA(s) for this course will be in HP 1170 during stated office hours.
|
Name |
Office Hours |
|
Tue. and Thu. 4:00 pm-5:00 pm |
- Please use "COMP 2601" in the subject line of any e-mail.
- Suggestion! Get Dropbox to save your course materials.
- An implementation of Assignment #3 has been uploaded.
- Assignment #3 has been updated. BONUS marks are now possible. Due date is now 11:55 pm on April 3rd.
- Deadline for demonstration of in class work for classes 13-22 is end of class on Tuesday, 3rd April 2012. There will be no in class work on or after Thursday 29th March 2012.
- Final is scheduled for the 18th April 2012 at 9:00 am. The exam will take place in 4125 HP and last 3 hours. The exam will be open book and you may use your computer. You may access any materials that you have on your computer. You must answer one of two programming questions.
- Assignment #3 has now been posted.
- There's a talk by Jason Brennan on "Cocoa touch and new features in Objective-C" at Cocoaheads this Thursday. See page for details.
- Class on 1st March to be used for final marking of Android in-class assignments and iPhone catch up. Stevenson will mark in-class assignments.
- XCode 4.3 will be supported for the iPhone portion of the course.
- Midterm will cover Android programming and patterns:
- Threads and AsyncTasks.
- The Handler object.
- Intents, Services and their respective lifecycles.
- Inter-activity communication mechanisms and patterns.
- Socket-based communication, streams and JSON.
- Event-based programming and the Reactor pattern.
- Publish-subscribe.
- Knowledge of simple use of ListView and MapView widgets is expected.
- UPDATED: Midterm will be held on the 28th February in HP 4175. The exam will last 2 hours and will be written on computer.
- Assignment #2 has now been posted.
- IMPORTANT: All Android-related in-class assignments must be demonstrated by the end of the class on the 28th February.
- Assignment #1 has now been posted.
Development of applications for mobile environments taking advantage of gesture-based input and using location and presence services. Topics include introduction to low-level network services and mobile platforms, description of architectural patterns, principles of mobile development and interaction styles for network service usage.
COMP 1601
Android
- Mednieks et al., "Programming Android"
- or Steele and To, The Android Developer's Cookbook: Building Applications with the Android SDK
iOS
- Smyth, "iPad iOS 5 Development Essentials"
- or Smyth, "iPhone iOS 5 Development Essentials"
- 5th January: Course Overview
- In-class: Configuration of Eclipse and ADT
- Reading: Programming Android, Chapter 1
- Reading: Programming Android, Chapter 5
- Review: COMP 1601 lecture 14
- Review: COMP 1601 lecture 15
- Review: COMP 1601 lecture 16
- Review: Android Intent Tutorial
- 10th January: Threads and Concurrency
- In-class: Thread life cycle and UI updates
- Reading: Thread tutorial
- Reading: Progress Bar
- Reading: Programming Android, Chapter 2, pages 33-67 on Java (review)
- Reading: Programming Android, Chapter 2, pages 68-76 on Threads
- Reading: Programming Android, Chapter 2, pages 77-78 on Activity and Intents
- Review: COMP 1601 Lecture 17
- Review: COMP 1601 Lecture 19
- 12th January: Concurrency issues and synchronization
- In-class: Synchronizing bank accounts
- Reading: Programming Android, Chapter 6, pages 142-155 on Threads
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 3, pages 51-64 on Threads
- Reading: Programming Android, Chapter 2, pages 68-76 on Threads
- Review: Java synchronization
- 17th January: Networking and Sockets
- In-class: Networking using sockets
- Reading: Useful material on Handlers
- Reading: Programming Android, Chapter 6, pages 156-163 on Serialization
- Reading: Java Serialization
- Reading: Java I/O
- 19th January: Networking and Reactor pattern
- In-class: Networking using messages
- Reading: Reactor pattern
- Reading: Useful material on Handlers
- Reading: ListView: contains simple adapter tutorial
- Reading: Android ListView widget
- Reading: Android ListView tutorial
- Review: COMP 1601 Lecture 17
- 24th January: Reactor pattern details
- In-class: Networking using messages (continued)
- NEW Reading: Simple ListView using SimpleAdapter
- 26th January: Services and Inter-activity Communication
- In-class: Services as an inter-activity communication channel
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 3, pages 64-72 on Services
- EXCELLENT Reading: Android services
- Reading: Passing data to another Android activity
- Reading: Passing bundles around activities
- Reading: Android service developer reference
- Reading: Reference for Intent class
- Reading: Android FAQ, specifically inter-activity communication
- 31st January: HTTP Interactions and JSON
- In-class: Getting Web content and using JSON
- Reading: Background on HTTP -- details NOT examinable
- Reading: JSON.org
- EXCELLENT Reading: JSON in Android -- Tutorial
- VERY GOOD Reading: HttpClient in Android -- Tutorial
- Reading: Android JSONObject reference
- Reading: Android AsyncTasks
- Reading: Android WebView
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 8, pages 204-219 on Using Web Content
- Review: COMP 1601 Lecture 21
- 2nd February: Google Maps
- In-class: Displaying and annotating maps
- XML: main.xml including key
- IMPORTANT Reading: Obtaining a Maps API key
- EXCELLENT Reading: Location API and Google Maps in Android
- Reading: Google MapView
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 10, pages 263-275 on Using Google Maps
- 7th February: Google Maps Advanced
- In-class: The Map app ...
- Review: COMP 1601 Lecture 18
- Software: Client-Server socket-based object transfer
- 9th February: Google Maps Advanced: Customized Overlays
- In-class: continue with Map app from previous class
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 10, pages 263-275 on Using Google Maps
- Software: Item view class
- Software: Item overlay class
- Reading: Android: Drawables
- 14th February: Publish-subscribe and saving state
- In-class: Preferences, File System Access (and Content Providers)
- Reading: Android File System Tutorial
- Reading: The Android Developer's Cookbook: Building Applications with the Android SDK, Chapter 9, pages 221-232 and 243-250 on Data Storage Methods
- Reading: Android: Preferences Framework
- Reading: Preferences Tutorial
- Reading: Android: Content Providers. Ignore SQL pieces, do look at notepad app.
- 16th February: iPhone
- Review: Lectures 11 and 12 of COMP 1601 iPhone
- In-class: Class tasks for lectures 11 and 12 of COMP 1601
- 28th February: Midterm
- 1st March: Marking of in-class assignments
- 6th March: Blocks and Properties
- In-class: Fun with Blocks
- Review: Objective-C Review
- Reading: Automatic Reference Counting (ARC)
- NEW! Web: Disable ARC for some files
- Reading: Apple: ARC
- Reading: Blocks: Getting started
- Web: Video on Blocks: Introduction
- Web: Video on Blocks: Parameters
- Web: Custom UITableViewCell classes
- Reading: Visual Programming and Custom UITableViewCell Classes
- 8th March: Threads
- In-class: Background Processing
- GOOD Web: Synchronization
- Web: Thread management
- Web: Apple on Multi-threading (long!) pp. 23-26.
- GOOD Reading: Threading tutorial
- 13th March: Sockets and Network Communication
- In-class: Client-server communication
- Web: Socket-based iPhone communication
- Web: NSStream
- Web: Run Loops
- Web: CocoaEcho -- shows how to write a simple client and server using NSStream.
- Web: Cocoa Async Sockets -- Easy to use socket implementation
- 15th March: Bonjour
- In-class: Bonjour service lifecycle
- Web: Networking and Bonjour example
- Web: Cocoa Async Sockets -- Easy to use socket implementation
- Web: NSNetService
- Web: NSNetServiceBrowser
- Web: Troubleshooting Bonjour for the iPhone
- 20th March: JSON
- In-class: JSON for instant messaging app.
- Web: NSJSONSerialization
- Web: JSON in iOS 5 Tutorial
- Video: NSJSONSerialization -- how to use JSON with iOS5 and XCode
- 22nd March: Reflection and Reactor
- In-class: Reactor
- Web: NSObject: Reflection
- Web: Resources -- for background only (NOT EXAMINABLE).
- Web: Property Lists: Reading Example
- Web: Property Lists: Writing Example
- Web: Apple: Property Lists
- Web: Objective-C: Protocols
- 27th March: Notifications
- In-class: Local notifications
- Video: Local Notification Development Tutorial
- Web: Handling Notifications
- Web: Local notifications example
- Web: UIApplication class
- Web: Managing application flow: background transitions
- 29th March: Lecture on Gestures (by Stevenson) -- NOT EXAMINABLE
- In-class: NONE! Completion of outstanding in-class problems.
- 3rd April: Exam Review
- In-class: NONE! Completion of outstanding in-class problems.
Students must provide their own laptops for in-class use.
Students will be required to use Eclipse and Xcode during this course.
You should take the time to ensure that your assignments are well documented and easy to understand. Assignments that don't meet these standards will be given fewer marks. Guidelines have been written that define documentation and testing standards. NOTE: NO LATE ASSIGNMENTS WILL BE ACCEPTED. WebCT will be used for assignment submission.
Marks will be posted on-line as soon as assignments have been graded. It is your responsibility to notify the instructor of any inconsistencies at once. Any complaints regarding assignment marks should be brought to the attention of the TA who marked them. This should be done no later than two weeks after the assignment has been first marked. No assignment remarking will be done after this time.
You should take the time to ensure that assignments are neat, legible and easy to understand. Any instructions required by the teaching assistants (for example any assumptions you made about the assignments) should be clearly indicated in a README.TXT file submitted with your assignment. Remember, it is YOUR responsibility to demonstrate that you have understood and completed the assignment. A significant portion of your grade for assignments will be given for the readability of them and for your demonstration that you have completed the assigned tasks.
There will be 3 assignments in this course which will be available on the course web page. All assignments are counted towards the final grade.
Copying of assignments is strictly disallowed. On the first occasion, all students involved will be given a mark of 0. On subsequent occasions, students will be asked to withdraw from the course.
Assignments (3) 25% In-class problems 25% Mid-term 20% Final 30%
As well as being announced in class, all important information, such as course news, assignments, TA hours, instructor office hours, will be available on the course web page at http://www.scs.carleton.ca/~arpwhite/courses/2601. It is the student's responsibility to check this web page for new information regularly.
Students with disabilities requiring academic accommodations in this course are encouraged to contact a coordinator at the Paul Menton Centre to complete the necessary letters of accommodations. After registering with the Paul Menton Centre, make an appointment to come and discuss your needs with me at least two weeks prior to the midterm exam. This is necessary in order to ensure sufficient time to make the necessary arrangements.