COMPSCI 122B LEC A: PROJ DATA&WEB APPS (34070)

Syllabus

Tu/Th 9:30-10:50 AM in DBH 1100.

Staff   Email (use Ed first) Office Hours

Instructor

Prof. Chen Li

chenli@ics.uci.edu

Tuesdays: 11 am - noon, Thursdays 2 - 3 pm, DBH 2086

Teaching Assistant

Yinan Zhou yinanz17@uci.edu

Wednesday: 10 - 11 am, Thursdays: 11 - 12 am, ICS 3rd floor Openlab 364b

Teaching Assistant Aditya Karad ankarad@uci.edu

Mondays: 12-1pm, Fridays: 12 - 1pm, ICS 3rd floor Openlab 364b

Reader Justin K. Huang huangjk2@uci.edu
Reader Robert Justin Lauv rlauv@uci.edu
Reader Jayden Le khangtl3@uci.edu
Reader Michelle Lin mblin1@uci.edu
Reader Kashyap Patel kashypp1@uci.edu
Reader David Yoon seongjiy@uci.edu

Course Overview

This course exposes students to advanced programming concepts and provides students with a greater focus on using DBMS techniques to build Web-based applications. It is intended for two purposes:

  1. It introduces students to modern data management techniques, including database connectivity, Web application development, extending database functions, database administration, and XML.
  2. It teaches students how to use these technologies to build real-world applications. The course builds on CS122A, which introduces students to classical relational databases and SQL programming.

In this offering for the first time we will include a new task related to Docker and Kubernetes given the recent trend of micro services and containerization.

Lectures

Date Content Resources
04/02/24 (Tu) Introduction, course overview

01-intro Download 01-intro, P1

04/04/24 (Th) P1, Development environment, Intellij, MySQL, JDBC Example, Tomcat P1, project1-jdbc-example Links to an external site.

project1-star-example Links to an external site.

04/09/24 (Tu) Webapp architectures, Web-app debugging

project1-api-example Links to an external site.02-webapp-architectures.ppt Download 02-webapp-architectures.ppt, project1-api-example/buggy Links to an external site.

04/11/24 (Th) Debugging (cont), Production environment on AWS

Ditto

04/16/24 (Tu) P2 overview, Form, Session

P2, project2-form-example Links to an external site.

Get/post methods Links to an external site.

movie 'memento' clip Links to an external site.

project2-session-example Links to an external site.

4/18/24 (Th) Project 2 features

project2-login-cart-example Links to an external site.

notes04-p2-features.pptx Download notes04-p2-features.pptx

4/23/24 (Tu) P2 features, Quiz 1 Ditto
4/25/24 (Th) Web server technologies, domain registration and mapping

Links to an external site.notes05-web-servers.pptx Download notes05-web-servers.pptx, jsp-example Links to an external site., asp Links to an external site., cgi Links to an external site., notes06-domain-registration.ppt Download notes06-domain-registration.ppt

4/30/24 (Tu) P3 overview,  recaptcha, mysql slow query logging, mysql "explain analyze" Links to an external site. 

notes07-recaptcha.pptx Download notes07-recaptcha.pptx

project3-recaptcha-example Links to an external site.

5/2/24 (Th)  HTTPS, Prepared statement, XML parsing

P3 task 2: https

notes08-prepared-statement.ppt Download notes08-prepared-statement.ppt

project3-SAXParser-example Links to an external site.

project3-DomParser-example Links to an external site.

notes09-xml.ppt Download notes09-xml.ppt

5/7/24 (Tu) XML, P3: improving performance of populating DB, Password encryption

notes10-transactions.ppt Download notes10-transactions.ppt

BatchInsert.java Download BatchInsert.java

mysql data load Links to an external site.

project3-encryption-example Links to an external site.

5/9/24 (Th) More on improving db-population performance, Stored procedures and functions, XML Basics

notes11-stored-procedures-functions.ppt Download notes11-stored-procedures-functions.ppt 

5/14/24 (Tu) Project 4, full-text search, Quiz 2

notes12-full-text-search.ppt Download notes12-full-text-search.ppt

full-text search example

5/16/24 (Th) Online, Video Links to an external site.

Autocomplete, UDF and fuzzy search, Connection pooling

project4-autocomplete-example Links to an external site.

notes13-udf-fuzzy-search.ppt Download notes13-udf-fuzzy-search.ppt, P4 Task 3, project5-TomcatPooling-example Links to an external site.

5/21/24 (Tu)

p4: scalability overview, MySQL replication

P4 Task 3

5/23/24 (Th)

Load balancing of web servers, GCP

P4 Task 4, GCP, MySQL Router Links to an external site., notes14-scaling-fabflix.ppt Download notes14-scaling-fabflix.ppt Links to an external site.
5/28/24 (Tu), Video Links to an external site.

Docker Containers, Running an app in a container

Project 5, project5-murphy-movies, Links to an external site. notes15-docker Download notes15-docker

5/30/24 (Th), Video Links to an external site.

Docker Containers (cont), Kubernetes (1) 

set up a Kubernetes cluster on AWS

notes16-kubernetes Download notes16-kubernetes

6/4/24 (Tu), Video Links to an external site. Links to an external site.

Kubernetes (2)

Deploy the Murphy Movies app to the k8s cluster on AWS,

6/6/24 (Th), Video Links to an external site.

Stress test using jmeter, course wrap up, quiz 3

 jmeter test examples, notes17-wrapup.pptx Download notes17-wrapup.pptx

 


 


Projects

Project Tasks Days Deadline Weight
1 Project 1: Setup AWS, MySQL, JDBC, Tomcat, Start Fabflix 14 Sunday April 14th, 11:59pm 17%
2 Project 2: Developing Fabflix Website 14 Sunday April 28th, 11:59pm 17%
3 Project 3: reCAPTCHA, HTTPS, PreparedStatement, Stored Procedure, XML Parsing 14 Sunday May 12th, 11:59pm 17%
4 Project 4: Full-Text Search, Autocomplete, Fuzzy Search, Scaling Fabflix 14 Sunday May 26th, 11:59pm 17%
5 Project 5: Docker, Kubernetes, and JMeter 14 Sunday June 9th, 11:59pm 17%

Note: Remember to update your website's  URL in this spreadsheet Links to an external site. when you finish each project or if your AWS instance's public IP is changed. We need to access your website to grade it.

CS122B-overview-2020-spring.png

design-diagram.png


Quizzes

  • We will do a quiz in-person through Canvas Quiz. 
Quiz Date Weight
1 4/23/24  5%
2 5/14/24 5%
3 6/6/24 5%

Online Discussion

We are using Ed for course discussion.

  • Please use Ed properly. It's a place for students to exchange ideas. Don't post easy or random questions without much thinking.
  • To encourage students to participate in Ed discussions and provide high-quality answers actively, we will select 4 students with the best Ed performance. These students will get 2% extra credit in the overall scores.

Use Ed to ask questions. Make posts public as much as you can so that the answers can benefit the whole class. Please do NOT email the staff members unless it's confidential and sensitive.

A UCI Research Group,  Mondego, led by Professor Crista Videira Lopes has developed a ChatGPT-like AI Tutor that is custom-trained for CS122B. It is now available at https://cs122b.clotho.ics.uci.edu/. You can refer to this Google doc Links to an external site. for detailed instructions.

Use Ed Instead of Email

Due to the large class size and many staff members, please only unnecessary email communication to the staff if your question is personal and confidential. Most questions can be asked on Ed. Make it public if you think it can benefit the entire class. If you want to avoid the class seeing it, make it private and visible to all the instructors so that the staff members can see it and give consistent answers.


Grade Book

Your grades will be returned through GradeScope (for regrades) and finally imported into Canvas.


Using Cloud Services

The course will heavily use cloud services (Amazon AWS and Google Cloud Platform). You are expected to launch instances on AWS to deploy some of the projects you are developing. AWS provides free-tier 64-bit Ubuntu instances. You are welcome to participate in the ​​AWS Educate program, which can provide $100 AWS credits per student. $100 credits are no longer available. We will provide more instructions about using their services to deploy your projects. We will also use Google Cloud Platform (GCP), which provides $300 free trial credits at Google Cloud Free Trial Links to an external site..


Grading Breakdown

Projects: 85%

Quizzes: 15% 

Participation in EEE Class Evaluation: 1% 

If you disagree with the grading for all the graded projects and exams, you can discuss them with us within one week after they are returned. After that, all the grades will be finalized.


Prerequisites

You should have taken CS122A or an equivalent course. In addition, you should have a reasonable understanding of core computer science concepts, good familiarity with relational databases (the equivalent of CS122A), good programming skills in Java, skills to learn other programming languages, and familiarity with basic undergraduate-level operating system concepts. Above all, you need to have a positive attitude towards learning and no inhibitions about working in groups and learning from each other. If you are still determining whether you meet the requirements, contact the staff on Ed ASAP to ensure you are ready to take this course.


Working in Teams

  • Working together on projects is strongly encouraged. You can form teams of no more than 2 (two) students and submit one project per group making. Work in teams will be graded on a per-team basis.
  • Students may leave their existing team in the quarter. But they cannot join any new group after the end of the first week. For each team splitting, the team members should tell the instructor at least two weeks before the corresponding project deadline.
  • From the previous quarters, we saw quite a few students who worked alone first but found out the workload was much higher than they initially expected. Thus, please seize the opportunity of the first two weeks to find good teammates to work together.

Project Late Policy

  • The official due date for each assignment is listed here on this page; students are expected to turn the work in on or before that date.
  • We will offer a 24-hour grace period for each assignment and accept submissions turned in within 24 hours of the due date, with a 10-point penalty. It's 10 points, not 10 percent. For example, if your late project got 87 points, your real score will be 87-10=77 points. If you commit to the master (main) branch after the deadline, it will be considered using the grace period.
  • Late assignments after the grace period will NOT be accepted beyond the grace period, so always aim to be on time! Please don't even ask, as this is what the 24-hour grace period is intended for.

Policy on Academic Honesty

  • All students will be expected to adhere to the UCI and ICS Academic Honesty policies (see https://conduct.uci.edu/students/academic-integrity/index.php for details). Any student found to be involved in cheating or aiding others in doing so will be academically prosecuted to the maximum extent possible: that means you will fail this course. Just say no to cheating!
  • In case you reuse another party's source code for certain generic tasks (e.g., JDBC access) make sure you explicitly comment on its origin in your source code.