CS241001 Software Design and Studio

from Ideas to Applications to Real Impact

Description

The aim of this course this year is to provide students with a comprehensive understanding of software design processes and hands-on experience in developing web/mobile applications integrated with AI technologies. In this course, we will explore fundamental software design concepts, development tools, and cutting-edge technologies to prepare you for the dynamic world of software engineering. The syllabus is divided into three sections:

Section 1: Introduction to Cross-Platform Development with Flutter and Dart

This section will immerse you in the exciting realm of cross-platform development using Flutter and its associated programming language, Dart. Extending your existing knowledge about C++ or Java, you will delve into more advanced programming concepts such as functional programming, null safety, and asynchronous programming. Additionally, we will explore the integration of cloud services, specifically Firebase, as a robust backend solution.

Section 2: Exploring AI Fundamentals and Services

In the second section, we will demystify the world of Artificial Intelligence. You will learn some basic Machine Learning and Generative AI concepts, as well as hands-on experience with available services, including the OpenAI APIs. This knowledge will empower you to ideate and implement creative term projects, fostering innovation and critical thinking.

Section 3: Software Design Process and User-Centric Development

The final section of the course focuses on guiding you through the software design process. From identifying user needs to designing core features, building prototypes, and conducting usability tests, you will gain practical skills that are vital for successful software development. This section emphasizes user-centric approaches, ensuring that your applications meet the needs and expectations of end-users.

Syllabus(Tentative)

Instructor

Teaching Assistants

Yu-Hsuan Chen
陳佑軒

Jou-Hsuan Yang
楊柔暄

Sheng-Wei Cheng
鄭勝偉


Contact TAs: ssta2024@datalab.cs.nthu.edu.tw

Time & Location

  • Video & lectures: Tue. 3:30-5:20pm at Delta 105
  • Labs: Thu. 3:30-5:20pm at EECS 326.328
  • Office hour: Tue. 10:10am-12:00pm at Delta 729

Grading Policy

  • Labs: 40% ( 4% * 10 labs)
  • Design demo (with usability testing): 30%
  • Implementation demo: 30%
  • Q/A bonus: up to 5%

Prerequisites

To maximize your success in this course, it is essential to possess a solid foundation in an object-oriented programming language, such as C++ or Java, familiarity with data structures, and the ability to navigate through a nontrivial project (e.g., one hosted on GitHub).

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

Git Command-line Tool Installation

This appendix guides you how to install Git command-line tool.

Slides

Lecture 01

Flutter & Dart Basics I

Slides

ROLL DICE APP - example

GitLab

Lab 01

GitLab

Lecture 02

Flutter & Dart Basics II

Slides

QUIZ APP - example

GitLab

Lab 02

GitLab

Lecture 03

Widget Theme

Slides

Expense Tracker - example

GitLab

Lab 03

GitLab

Lecture 04

Rendering & Responsive UI

Slides

Expense Tracker with parallax scrolling - example

GitLab

Lab04

GitLab

Lecture 05

ML & AI

Slides

OpenAI api - example

GitLab

Lab 05

GitLab

Lecture 06

Software design

Slides

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

Online Tutorial