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

Syllabus

CS 122B - Projects in Databases and Web Applications

Tu/Th 9:30-10:50 AM in HH 178.

Staff   Email (use Ed first) Office Hours

Instructor

Prof. Chen Li

chenli AT ics DOT uci DOT edu

Tuesdays: 11 am - noon, DBH 2086

Teaching Assistant

Juncheng Fang junchf1 AT uci DOT edu

Fridays: 11 am - noon, ICS1 458A

Teaching Assistant Ali Risheh arisheh AT uci DOT edu

Mondays 3 pm - 4 pm,
currently on Zoom, this link Links to an external site.

Reader Alyssa Lauron Reyes alreyes3 AT uci DOT edu
Reader Lara Sabha sabhal AT uci DOT edu
Reader Aditya Dev Singh adityads AT uci DOT edu
Reader Qizhi Tian qizhit AT uci DOT edu
Reader Jun Xia xiaj8 AT uci DOT 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.

Lectures

ID Date Content Resources
1 01/07/25 (Tu) Course overview, P1 overview, JDBC Example

01-intro Download 01-intro, Project 1, jdbc-example Links to an external site.

2 01/09/25 (Th) JDBC, Tomcat, Webapp architectures

project1-star-example Links to an external site., project1-api-example Links to an external site.03-webapp-architectures Download 03-webapp-architectures

3 01/14/25 (Tu) Webapp architectures, Web-app debugging, MySQL logging, Tomcat logging

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

4 01/16/25 (Th) Production environment on AWS

AWS

5 01/21/25 (Tu) P2 overview, Form, Session

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.

6 01/23/25 (Th) Project 2: more features

project2-login-cart-example Links to an external site.,  notes04-p2-features.pptx Download notes04-p2-features.pptx

7 01/28/25 (Tu) ODBC, Quiz 1

notes02-odbc Download notes02-odbc

8 01/30/25 (Th) jsp, Web server technologies, domain registration and mapping

jsp-example Links to an external site., notes05-web-servers.pptx Download notes05-web-servers.pptx, 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

9 02/04/25 (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.

 

10 02/06/25 (Th) HTTPS, Prepared statement, XML parsing

P3 task 2: httpsnotes08-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

 

11 02/11/25 (Tu) XML, P3: improving performance of populating DB

notes10-transactions.ppt Download notes10-transactions.ppt
BatchInsert.java Download BatchInsert.java
mysql data load Links to an external site.

12 02/13/25 (Th)

Password encryption, Stored procedures and functions

Links to an external site.project3-encryption-example Links to an external site., notes11-stored-procedures-functions.ppt Download notes11-stored-procedures-functions.ppt

13  02/18/25 (Tu)

 Project 4, Full-text search, Autocomplete

notes12-full-text-search.ppt Download notes12-full-text-search.ppt, MySQL full-text Search Examples, project4-autocomplete-example Links to an external site.

14 02/20/25 (Th)

UDF and fuzzy search, 2nd in-class quiz

notes13-udf-fuzzy-search.ppt Download notes13-udf-fuzzy-search.ppt, Flamingo Library,

15 02/25/25 (Tu)

Connection pooling, scalability overview, MySQL replication

 TomcatPooling-example Links to an external site., notes14-scaling-fabflix Download notes14-scaling-fabflix, P4 Task 3

16 02/27/25 (Th)

Load balancing of web servers, GCP

P4 Task 4, GCP Links to an external site.

17 03/04/25 (Tu)

Docker Containers, Running an app in a container

MySQL Router Links to an external site.,  Project 5, notes15-docker Download notes15-docker, murphy-movies ("master Links to an external site." branch demo and "Docker Links to an external site." branch demo), 

18 03/06/25 (Th)

Kubernetes

notes16-kubernetes Download notes16-kubernetes, Task 2: Setup a Kubernetes cluster on AWS

19 03/11/25 (Tu)

Kubernetes (cont), multi-service architecture

Task 3: Run Murphy Movies app in the cluster, cs122b-project5-murphy-movies-k8s Links to an external site.

Task 4: Run Murphy Movies using a Multi-service architecture

notes17-multi-services Download notes17-multi-services

20 03/13/25 (Th)

State management in multi-service architecture, course wrap-up, third quiz

Ditto


Projects

Project Tasks Days Deadline Weight
1 Project 1: MySQL, JDBC, Tomcat, AWS, Start Fabflix 14 Sunday Jan 19th, 11:59pm 17%
2 Project 2: Developing Fabflix Website 14 Sunday Feb 2nd, 11:59pm 17%
3 Project 3: reCAPTCHA, HTTPS, PreparedStatement, Stored Procedure, XML Parsing 14 Sunday Feb 16th, 11:59pm 17%
4 Project 4: Full-Text Search, Autocomplete, Fuzzy Search, Scaling Fabflix 14 Sunday Mar 2nd, 11:59pm 17%
5 Project 5: Docker and Kubernetes 14 Sunday Mar 16th, 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 Jan. 28, Tuesday  5%
2 Feb. 20, Thursday  5%
3 March 13, Thursday  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 3 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.

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. We will provide more instructions about using their services to deploy your projects. We will also use Google Cloud Platform (GCP). Please check Google Cloud Free Trial Links to an external site..


Grading Breakdown

Projects: 85%

Quizzes:  15% 

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.