CS241001 Software Studio

from Ideas to Applications to Real Impact

Description

This course presents hands-on labs in the software aspect for students to be familiar with software design and development processes. The class follows a mainstream of building a useful mobile app under selected topics. We introduce some important software design concepts and development tools.

The class is divided into three parts. In the first part, we guide students to identify user needs and design core features. In the second part, we will teach fast prototyping and feedback analysis. Finally, we talk about how to make the software intelligent by introducing some basic AI and machine learning concepts.

Syllabus(Tentative)

Instructor

Teaching Assistants

Time & Location

  • Video & lectures: Tue. 3:30-5:20pm at Delta 105
  • Labs: Thu. 3:30-5:20pm at EECS 326.328
  • Office hour: Mon. 3:30pm-5:20pm at Delta 724.729

Grading Policy

  • Part-I Project Presentation 20%
  • Part-II Project Presentation 20%
  • Part-III Project Demo & Presentation 30%
  • Labs 30%

Prerequisites

This course requires students to have solid understanding of

  • Data Structure,
  • Programming (in C/C++ or Java)
You will be asked to read the documentation of Android or iOS to be familiar with the mobile app development yourself. The lectures focus on other aspects than code. You will also be asked to develop a functional mobile app in the end.

Announcement

Curriculum

If you have any feedback, feel free to contact: shwu [AT] cs.nthu.edu.tw

Lecture 00

Introduction

About This Course... | FAQ

Slides

General Rules and Introduction to Git

This lab guides you through the main idea of version control systems, the basic usage of Git, and how to submit on our GitLab.

GitLab Slides

Android Basic in Kotlin 1: Kotlin Basic

Learn Kotlin and build your first app.

GitLab Document

Lecture 01

Design Thinking

Thinking as a Designer

Slides App List

Android Basic - Introduction

This lab guides you through the folder structure of Android.

Slides

Android Basic in Kotlin 2: Layout

Build apps and imporve the user interface.

GitLab Document

Lecture 02

Empathizing with users

First UX research, User interview, Empathy Maps

Slides

Android Basic - Layout

This lab guides you through Layout and RecyclerView.

Slides

Android Basic in Kotlin 3: Navigation

Enhance your users' ability to navigate across, into and back out from the various screens within your app for a consistent and predictable user experience.

GitLab Document

Lecture 03

Define Problems Worthy to Solve

Design sprints, User stories and journey map, "How might we", Problem statement

Slides

Android Basic - Navigation

This lab gives an introduction to Option Menu, Bottom Navigation and Navigation Drawer.

Slides GitLab

Lecture 04

Android Basic - Review Questions

This lab review what you have learned in the last 3 weeks in android basic course.

Slides

Android Basic in Kotlin 4: Internet

Write coroutines for complex code, and learn about HTTP and REST to get data from the internet.

GitLab Document

Lecture 05

Ideating Solutions

Brainstorming and the Crazy 8. Competitive Aduit and Unique Value Proposition. Refining and deciding the best solutions.

Slides

Android Basic - Corutines

This lab introduce more details of corutine.

Slides

Android Basic in Kotlin 5: Data persistence

Keep your apps working through any disruptions to essential networks or processes for a smooth and consistent user experience.

GitLab Document

Lecture 06

Wireframes and Low-Fidelity Prototypes

Design Sprint Day 3. Storyboarding, wireframing and Lo-fi prototyping.

Slides

Android Basic - Flows

This lab introduce why we use Flow and how to produce a Flow.

Slides

Android Basic in Kotlin 6: Data persistence

Use Android Jetpack’s WorkManager API to schedule necessary background work, like backing up data or downloading fresh content, that keeps running even if the app exits or the device restarts.

GitLab Document

Lecture 07

Usability Study

Design Sprint Day 5. Low-fi Prototype. 7 Key Elements of a good plan.

Slides

Apollo server with GraphQL

Download and set up Node.js. Start with your first server.

GitLab Slides

Lecture 08

Hi-Fidelity Prototypes

Improved Low-fi Prototypes. Creating Mockups. Getting feedback from design critic sessions. Hi-fi prototyping & usability tests.

Slides

Lab Apollo Server with GraphQL & Weathermap Api

Generate WeatherMapApi Key and build a Apollo server with Weathermap Api.

GitLab Slides

Lecture 09

Lab Apollo Server with GraphQL and Database

Try to build GraphQL server with your own Database.

GitLab Slides

Lecture 10

Design for Execution Part 1: Acquisition and Activation

A cognitive model for human brain. Optimizing context or touchpoints. Optimizing decision interface.

Slides

Lab Apollo Server with GraphQL & Android App

Try to combine Android app with GraphQL apollo server.

GitLab Document

Lecture 11

Design for Execution Part 2: Retention and Growth

Design for retention and Growth. Know the reason why we are addicted to social media.

Slides

Lab - Clean Architecture & Dependency Injection in Android

Introduction to clean code and architecture. Learn the new conecept of Dependency Injection in Android.

Slides

Lecture 12

Lab - Jetpack Compose Basic

Introduction to jetpack compose in android. Learn how to build a simple layout by jetpack compose.

Slides

Lecture 13

Data Analytics

Introduce to Invisible Design Part I. Deep into Data Analysis and Business Intelligent.

Slides

Lab - Jetpack Compose State

understanding of @Composable and how it interact with State. Learn how to use Navigation in Compose and handle complex UI logic.

Slides

Lecture 14

Intelligence

Introduce to Invisible Design Part II: Machine Learning and Web/App Intelligence. Give some basic concepts of machine learning and show the open source from Github.

Slides

Lab - Kotlin Flow and Compose Snapshot

Trace code in online project and learn how the Snapshot object work with Flow.

Slides

Lecture 15

Lab - Tensorflow.js

Introduction to Tensorflow.js and implement it in GraphQL. Train a text-toxic model on your own.

Slides Notebook

Resources

Here are some course materials and resources related to this course. For code and its details (such as assigned reading, project links, quiz, etc.) please refer to the GitLab. For online forum please refer to the eeclass system.

GitLab eeclass

Online Tutorial