CS241002 Software Studio, Spring 2016
Course Description
This course presents hands-on labs for students in the software aspect for students to be familiar with software development process and techniques. The class follows a mainstream aiming to build a full-function Android app with the server running in the cloud using popular platforms (e.g., Google App Engine) and open source libraries (e.g., Apache HttpClient, Apache Lucene, etc.).
The class is divided into three parts, namely, the fundamentals, app development, and data-driven intelligence. In the fundamental part, a primer to some important programming languages other than C/C++, such as Java, XML, Regex, and HTTP, will be given. We will highlight the concept of OOP and the advantages of different languages to help student make correct decisions when creating a project. Handy tools such as Eclipse, CVS/Git, will also be covered to get students familiar with project-based and team-based development. In the app development part, we will explain how to implement a full-function Android app, including its architecture design, client/server interfacing, and some useful patterns. Finally, to see how the knowledge learned from the first two parts can be applied to solve real problems, in the data-driven intelligence part, we will go through a case study on how to convert the raw data collected from app users into human-sensible intelligence.
Basic understanding of C/C++ programming language and data structure is required.
Lecturer
Prof. Shan-Hung Wu
E-mail: shwu@cs.nthu.edu.tw
Phone: +886-3-5742961
Office: Delta 603
TAs
Office: Delta 723/724 NetDB
Office hour: Wednesday 15:10 - 17:10
* Main contact.
Announcements
- 2016/02/21 Lecture notes are updated
- 2016/02/23 Lab slides are updated
- 2016/02/25 Lecture notes are updated
- 2016/02/27 Lecture notes are updated
- 2016/03/01 Lab slides are updated
- 2016/03/02 Update Lab Attendance
- 2016/03/10 Lecture notes are updated
- 2016/03/14 Assignment 1 link announce
- 2016/03/14 Lab solutions are updated
- 2016/03/15 Lab slides are updated
- 2016/03/21 Assignment 2 link announce
- 2016/03/22 Lab05 slide is announced
- 2016/03/23 Lab04 solution is announced
- 2016/03/23 Assignment 1 solution is announced
- 2016/03/24 Lecture notes are updated
- 2016/03/24 Assignment 2 solution is announced
- 2016/03/24 Assignment 3 is announced
- 2016/03/29 Lab06 slide is announced
- 2016/03/30 Lab05 solution is announced
- 2016/03/31 Assignment 4 is announced
- 2016/04/07 Lecture notes are updated
- 2016/04/12 Lab07 slide is announced
- 2016/04/14 Lecture notes are updated
- 2016/04/19 Lab08 slide is announced
- 2016/04/24 Lab07 solution is announced
- 2016/04/26 Lab09 slide is announced
- 2016/05/02 Lab08 solution is announced
- 2016/05/03 Lab10 slide is announced
- 2016/05/05 Appendix E Hello Android is announced
- 2016/05/07 Android slide 01 is announced
- 2016/05/10 Android slide 02 is announced
- 2016/05/13 Android slide 03 is announced
- 2016/05/17 Android slide 04a is announced
- 2016/05/18 Android slide 04b is announced
- 2016/05/27 Android slide 05 is announced
- 2016/05/27 Android slide 06 is announced
- 2016/06/10 Server slide is announced
Materials
Textbook
- Lecture Notes
Eclipse
- http://help.eclipse.org
Java
- http://download.oracle.com/javase/tutorial/
XML and Maven
- http://www.w3schools.com/xml/default.asp
- http://maven.apache.org/pom.html
Lecture Notes
Trunk
- 01 Introduction
- 02 Hello World Revisited
- 03 Inside Classes v4 (updated: 2016/04/07)
- 04 Between Classes v4 (updated: 2016/04/07)
- 05 Collections
- 06 IO
- 06 Multi Threading
- 07 Web Intelligence
- 01 Fundamentals
- 02 Cloud v2 (updated: 2016/05/12)
- 03 Intent
- 04a Lifecyle & Data v2 (updated: 2016/05/24)
- 04b Content Provider & Loader v3 (updated: 2016/05/27)
- 05 UI
- 06 Service & Notification
- 01 Client Server Interface
- 02 Cloud Service Development
- 03 Machine Learning
Java
Android
(reference online course: link)
(Android developer guide: link)(finish getting started session: building your first app -> working with system permission)
(Android API guide: link)
(our slack: link)
Server
Labs
- 01 Hello Java (updated: 2016/02/23) Solution
- 02 Reusing Projects (updated: 2016/03/01) Solution
- 03 VCS & Debugger (updated: 2016/03/08)
- 04 Unit Test (updated: 2016/03/15) Solution
- 05 Maven Project Management (updated: 2016/03/22) Solution
- 06 Cocktail (updated: 2016/03/29)
- 07 Decorator Pattern and Java I/O (updated: 2016/04/12) Solution
- 08 XML (updated: 2016/04/19) Solution
- 09 Analyzer in Recommender (updated: 2016/04/26)
- 10 Searcher in Recommender (updated: 2016/05/03)
Final Project
Appendices
- A Develop Environment Setup
- B Git Command-line Tool Installation
- C Assignments Submission to Gitlab
- D Creating Your Own Projects
- E Hello Android
- F Setup Server
Assignments
- Assignment1 - tracing memory (Solution)
- Assignment2 - Geo map (Solution)
- Assignment3 - Basic Collections
- Assignment4 - Generic Collections
Attendance
Grading
Evaluation
- Midterm Exam: 30%
- Assignments: 20%
- Lab: 20%
- Final Project: 30%