Hello, dear friend, you can consult us at any time if you have any questions, add WeChat: daixieit

SYLLABUS (18 Aug 2022)

Applied and Cloud Computing for Electrical Engineers

EE 547: Fall 2022 (2 units)

This course introduces tools and concepts to deploy and maintain full stack software solutions in modern computing environments. This project-driven course guides students through the process of taking ideas from concept to product. The course is intended for graduate electrical engineering students with prior programming experience. This course uses Python and Node.js as primary coding languages. It assumes no prior knowledge of these languages but prior exposure is beneficial. It exposes students to technologies and practices relevant to modern application deployment. The course consists of three main parts: (1) introduction to cloud technologies and integration methods, (2) frontend and backend programming, and (3) deployment within the global computing infrastructure. The course will introduce students to cloud environments and teach cross-service concepts applicable across platforms and within the medium-term future (4-6 years).

Instructor:

Brandon Franzke

Email:

franzke@usc.edu

Office:

EEB 504B

Zoom:

meet: 998 5176 5591

code: 574987

Hours:

Monday: 17:00 - 18:00

Wednesday: 12:00 - 14:00

Lecture

Tuesday (section: 30897)

16:00 – 17:50

Discussion

Friday (section: 30979)

14:00 – 14:50?

Attendance and Participation

This class is offered with in-person enrollment ONLY. Attendance is mandatory to all lectures and discussions. You are responsible for missed announcements or changes to the course schedule or assign- ments. Taping or recording lectures or discussions is strictly forbidden.

Piazza

https://piazza.com/usc/fall2022/ee547

Piazza enables fast and efficient help from classmates and instructors.  Use Piazza to post questions about course material, homeworks, and policies instead of emailing questions to the teaching staff.

Canvas

https://canvas.usc-ece.com

Use Canvas to electronically submit your homework and view course grades. You will receive an email to register during the first week of classes. Contact Dr. Franzke with any technical issues.

Autolab

https://autolab.usc-ece.com

Use Autolab to electronically submit programming portions of homework for “auto-grading”.  You will receive an email to register during the first weeks of the course.  Contact Dr.  Franzke with technical issues.

TAs and

TA:

Zoom:

Hours:

Email:

staff

Xiou Ge

meet: 971 5433 1073

Friday:   09:30 - 11:30

[email protected]

CP:

Hours:

E-mail:

Grader:

Hours:

E-mail:

Ziyou Geng

by appointment

[email protected]

Zeyu Wang

by appointment

[email protected]

Learning objectives

Upon completion of this course a student will be able to:

❼ Understand the role of cloud services in a modern application stack.

❼ Develop interactive applications that expose backend state and data storage to distributed clients. ❼ Develop client-side programming skills to deploy applications with asynchronous input.

❼ Distinguish standard databases and apply option(s) that best represent a given data model, cost

requirement, or compatibility.

❼ Ability to work within common cloud platforms, understand their limitations, and how choices

affect the scope or reach of their software solution.

❼ Manage the lifecycle of a software application from concept, deployment, maintenance, and end

of life.

❼ Be comfortable working within virtual or containerized environments and have knowledge to access

host level devices.

❼ Understand how applications exist within and interact with the global computing infrastructure.

Course materials

❼“Node.js Design Patterns”, 3nd edition, Mario Casciaro and Luciano Mammino, Packt Publishing,

2020. (required).

❼“Cloud Native Patterns:  Designing change-tolerant software”, 1st edition, Cornelia Davis, Man-

ning, 2019. (required).

❼“Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement”,

2nd edition, Luc Perkins, Eric Redmond, and Jim R. Wilson, Pragmatic Bookshelf, 2018.  (re- quired).

❼“Release It!: Design and Deploy Production-Ready Software”, 2nd edition, Michael Nygard, Prag-

matic Bookshelf, 2018. (optional).

❼“Eloquent JavaScript”, 3rd edition, Marijn Haverbeke, No Starch Press, 2018.  (online: https: //eloquentjavascript.net/index.html).

❼“Speaking JavaScript”, 1st edition, Axel Rauschmayer, O’Reilly Media, 2014.  (online, updated: http://speakingjs.com/).

❼“Learning JavaScript Design  Patterns:  A JavaScript and jQuery Developer’s  Guide”,  1st edi-

tion, Addy Osmani, O’Reilly Media, 2012.  (online, updated: https://www.patterns.dev/posts/ classic-design-patterns/).

❼“The Road to GraphQL”, Robin Wieruch, 2018. (online: https://github.com/the-road-to-graphql/ the-road-to-graphql).

Note: The texts are secondary to in-class lecture material and homework sets.

Course Outline (tentative)

Topics/Daily Activities

Homework

Deliverables

Week 1

(23 Aug)

Architecture (local vs. dis- tributed), containers, virtual- ization, and cloud PaaS. Walk- through: Create a backend.

HW 1 assigned.

Week 2

(30 Aug)

Language overview: JavaScript and Node.js.

HW 2 assigned.

HW 1 due.

Week 3

(06 Sep)

Backend development: Node.js and express mid- dleware.

HW 3 assigned.

HW 2 due.

Week 4

(13 Sep)

Frontend overview: HTML, CSS, JavaScript.

HW 3 due (16 Sep).

Week 5

(20 Sep)

Databases   I:   NoSQL.   Docu- ment. Mongo.

HW 4 assigned.

Week 6

(27 Sep)

Databases II: Relational. MySQL, Maria, and Postgres.

HW 5 assigned.

HW 4 due.

Week 7

(04 Oct)

AWS console and CLI. Walk- through: VPC stand-up.

HW 5 due (07 Oct).

Week 8

(11 Oct)

Walkthrough: VPC standup and application deployment

HW 6 assigned.

Week 9

(18 Oct)

Serverless compute, cloud stor- age. Application scalability.

HW 6 due (21 Oct).

Week 10

(25 Oct)

Midterm Exam (16:00 - 17:30)

Week 11

(01 Nov)

Frontend development and ap- plication frameworks

HW 7 assigned.

Preliminary proposal due (30 Oct). Proposal return: 04 Nov.

Week 12

(08 Nov)

Backend API patterns: REST vs GraphQL.

HW 8 assigned.

HW 7 due (11 Nov).

Revised proposal due (11 Nov).

Week 13

(15 Nov)

Authentication and Access control. Consuming Oauth.

Week 14

(22 Nov)

HW 8 due.

Phase 1 status due.

Week 15

(29 Nov)

Lifecycle: testing, continuous deployment, maintenance

Phase 2 status due (02 Dec).

FINAL

(08 Dec)

Project presentations, 16:30 - 18:30 (manadatory)

(10 Dec)

Project reports and videos due

Grading Procedure

Homework

Homework is assigned every 1-2 weeks. Assignments include a mix of applied and programmatic problems. Your total homework score sums your best homework scores (as a percentage) after removing the one lowest score (of minimum 50%).  Late homework will be accepted with a 10% deduction per 24-hours for up to 48-hours. You may discuss homework problems with classmates but each student must do their own original work.  Cheating warrants an F in the course.  Turning in identical homework establishes a rebuttable presumption of cheating.


Midterm Exam

You may use a single 8.5”x11” reference sheet (front and back OK). You may not use any additional resources. The midterm exam will include multiple-choice and/or short answer questions to demonstrate progress toward the learning objectives.  It will also include free-response or open-ended questions to demonstrate comprehensive mastery.  You may also be asked to determine expected behavior of novel computer code.  Students are expected to write correct code (abstract pseudo-code, Node.js, Python, etc.)  as well as have familiarity with Bash scripts.  Exam grading primarily follows correct reasoning but may include deductions for major syntax errors, algorithmic inefficiency, or poor implementation. You must show how you arrived at your answers to receive full credit.  You are expected to bring a non-graphing scientific calculator.

Final Project

This course culminates with a final project in lieu of a final exam.  Teams of three students (teams of two with instructor approval) design and implement a complete software product that connects two or more independent asynchronous components (often “frontend” and “backend”). The instructor will guide teams with difficulty identifying a suitable application. Teams may build an application similar to existing services or tools but their must efforts demonstrate understanding of the entire development stack and the product lifecycle from idea to deployment to maintenance. Though teams are encouraged to devise problems of particular interest to their backgrounds, interest, or research.  All projects must obtain the instructor’s written approval. Teams will prepare and present their approved project and show how it applies course material, concepts, and best-practices.  Attendance and participation during the project presentation session(s) are mandatory.

Requirements

Project topics must include sufficient scope and apply course knowledge to a useful end. The project must compose at least two distinct units that operate and act independently but provide greater function when acting together. The project must demonstrate comprehensive understanding of the entire development stack and the product lifecycle from idea to deployment to maintenance. Additional requirements and guidelines will be discussed closer to the commencement of the project.