Sei sulla pagina 1di 13

Software Studio

Shan-Hung Wu
CS, NTHU
Spring, 2016
Goals
• Presents hands-on labs for students to be
familiar with
– The paradigm of Object-Oriented Programming
(OOP) beyond the landscape of C
– Software development process
– Tools and techniques that save a programmer’s
life

2
How? (1/2)
• Follows a mainstream building an Android app
of your own
Tools (Eclipse, SVN, Maven, Android Studio etc.)
App Server (PC, Cloud, etc.)
Final Project
App Client (Android) Intelligence
Final Project MVC
Components Servlet / JSP
Rest / HTTP
Services Layouts Model Java
Android SDK / Google APIs JVM / Google App Engine

3
How? (2/2)
• Integrates with some popular open source
libraries (e.g., Apache HttpClient, Lucene, etc.)
and platforms (e.g., Android, Google App
Engine)
– Focuses on the “best practices”
• 2hr lecture on concept/principles
– At Delta 105 every Tue.
• 2hr hands-on lab
– At EECS 326 every another Thu. (tentatively)

4
OK, let’s do It Step-by-Step (1/3)
• Part I: the fundamentals
– Java and OOP
– Modular your codes
– Tools for project-/team-based development
Tools (Eclipse, SVN, Maven, Android Studio etc.)
App Server (PC, Cloud, etc.)
Final Project
App Client (Android) Intelligence
Final Project MVC
Components Servlet / JSP
Rest / HTTP
Services Layouts Model Java
Android SDK / Google APIs JVM / Google App Engine

5
OK, let’s do It Step-by-Step (2/3)
• Part II: Server-side development
– Client-server interfacing
– Servlet and MVC
– Intelligence (if time allows)
Tools (Eclipse, SVN, Maven, Android Studio etc.)
App Server (PC, Cloud, etc.)
Final Project
App Client (Android) Intelligence
Final Project MVC
Components Servlet / JSP
Rest / HTTP
Services Layouts Model Java
Android SDK / Google APIs JVM / Google App Engine

6
OK, let’s do It Step-by-Step (3/3)
• Part III: Client-side development
– Components
– Resources
– Model
Tools (Eclipse, SVN, Maven, Android Studio etc.)
App Server (PC, Cloud, etc.)
Final Project
App Client (Android) Intelligence
Final Project MVC
Components Servlet / JSP
Rest / HTTP
Services Layouts Model Java
Android SDK / Google APIs JVM / Google App Engine

7
FAQ (1/3)
• Is this a programming language course?
– No. We only teach selected topics of the mentioned languages;
But we go deep
• Is this a software engineering course?
– No. We don't focus on SE theories. But we expect you to learn
from the “best practices”
• What is this course about?
– Project development (process, and team collaboration)
– Tackling real problems using your (limited) knowledge in
• Languages
• Data structures and domain knowledge
• Tools
– It’s not necessary to grasp all features of a language to write
something useful

8
FAQ (2/3)
• Do I need to write programs in this course?
– A lot. We will give extensive coding assignments
– You will learn nothing if you don't make you feet wet
• Are we going to interact with the open source software?
– Yes. You are required to trace some open source code
• Typically long and complex
• Getting lost easily, but you should be comfortable with that
– You are also encouraged to fork open source projects
• I heard that C++ is faster. Why Java?
– We focus on high-level architecture rather than components
– Java saves you from boilerplate codes
– Good architecture leads to good overall performance, and more

9
FAQ (3/3)
• Why do I need to write code with others?
– You will face very big projects that you cannot handle along
– Learn to make sure 1 + 1 > 2 (or at least not 1 + 1 < 1)
• Do we need to come to the class?
– No, as long as you can pass
• Is this a light-loading class or heavy-loading class?
– Very heavy in terms of its 2 points-of-credit
– Assigned reading takes 2 ~ 4 hours per week
– Assigned coding takes 2~ 6 hour per week
– Reserve time, otherwise you will have high chance to fall
• How can I pass?
– Justify your ability in writing a working system in your final
project

10
Evaluation
• Midterm exam: 30%
• Assignments: 20%
• Labs: 20%
• Final project: 30%

11
Schedule
• We will have a project demo party after the
week of final exam
• Let's see what your seniors have done…

12
Resources
• Text Book
– Lecture notes
– Reference links
• Course page
– www.cs.nthu.edu.tw/~shwu
• TODO
– Register your seat

13