= CS122B Winter 2019: Projects in Databases and Web Applications = Time: T/Th 3:30 pm – 4:50 pm (Check the [https://www.reg.uci.edu/calendars/quarterly/2018-2019/quarterly18-19.html UCI Calendar] for holiday information)[[BR]]Location: [http://www.classrooms.uci.edu/GAC/SSH100.html SSH 100]. || '''Staff''' || '''Office Hours''' || '''Place''' || '''Email''' || || Instructor: [http://www.ics.uci.edu/~chenli Chen Li] || !Tu/Th 2:15 - 3:15 pm || DBH 2092 || chenli AT ics.uci.edu || || Dayue Bai || || || dayueb AT uci.edu || || Qiushi Bai || Fri 9-10 || ICS 464C || qbai1 AT uci.edu || || Yicong Huang || || || yicongh1 AT uci.edu || || Avinash Kumar || Mon 2-3 || ICS2 214 || avinask1 AT uci.edu || || Baihao Wang || || || baihaow AT uci.edu || || Zuozhi Wang || Wed 11-12 || ICS 464B || zuozhiw AT uci.edu || == Syllabus == || No. || '''Date''' || '''Notes''' || || 01 || 01/08/19, Tu || [attachment:notes01-intro.ppt Notes01: Introduction], Course Overview, [wiki:cs122b-2019-winter-project1#setup-aws Setup AWS], [wiki:cs122b-2019-winter-project1#setup-mysql Setup MySQL], [https://github.com/UCI-Chenli-teaching/project1-jdbc-example JDBC Example], [attachment:wiki:cs122b-2019-winter-project1:cs122b-setup-scripts.txt Setup Scripts] || || 02 || 01/10/19, Th || [https://github.com/UCI-Chenli-teaching/project1-jdbc-example JDBC Example], [attachment:notes02-odbc.ppt Notes02: ODBC], [https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2019-winter-project1#TomcatExample Tomcat Example], [https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2019-winter-project1-install-tomcat-on-aws Tomcat on AWS] || || 03 || 01/15/19, Tu || [attachment:notes03-micro-services-architecture.ppt Notes03: Micro-services architecture], [https://github.com/UCI-Chenli-teaching/project1-api-example api-example], [wiki:cs122b-2019-winter-project1-logging MySQL/Tomcat Logging] || || 04 || 01/17/19, Th || [attachment:notes04-git-overview.ppt Notes04: Git Overview], [wiki:cs122b-2019-winter-project1-git Using Github], [http://jqfundamentals.com/ Javascript/JQuery Overview] || || 05 || 01/22/19, Tu || [wiki:cs122b-2019-winter-project2 Project 2 Overview], [https://github.com/UCI-Chenli-teaching/project2-login-cart-example Project 2 Example], [https://www.w3schools.com/tags/ref_httpmethods.asp HTTP GET/POST], [https://www.youtube.com/watch?v=VqW9fnkhqrs '"Cookie Idea" in Movie Memento'] || == Online Discussion == * [https://piazza.com/uci/winter2019/cs122b Piazza] [[BR]] == Gradescope Link == Please signup on [https://www.gradescope.com/courses/35599 GradeScope] as a student using your UCI email, UCI ID, and use the code sent through Piazza to enroll into the course. == Projects (Subject to change) == || Project || Topic || Days || Due Date || Weight || Grading Rubrics || Demo Signup || || [https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2019-winter-project1 Project 1] || MySQL creation, JDBC, Tomcat, AWS, Starting Fabflix || 13 days || Week 3 Monday, 01/21 || 20% || [https://docs.google.com/spreadsheets/d/1Nmx75Oh0yf8S4BbqQJsGPdWuIJCqAooMkh1YHc1qzpU/edit#gid=324009389 P1 Rubric] || || || [https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2019-winter-project2 Project 2] || Developing Fabflix Website [https://www.youtube.com/watch?v=kGkhg0T6Tec&feature=youtu.be An earlier demo] || 14 days || Week 5 Monday, 02/08 || 20% || [https://docs.google.com/spreadsheets/d/1_mAktKI1dFyIn4td-iep6IHFPXJpwDH5FLudbPb2ebY/edit#gid=0 P2 Rubric] || || The project grading percentages add up to 100%, all projects worth 88% out of the total grade. * [https://docs.google.com/spreadsheets/d/1Nmx75Oh0yf8S4BbqQJsGPdWuIJCqAooMkh1YHc1qzpU/edit#gid=0 Github Usernames] * [https://docs.google.com/spreadsheets/d/1Nmx75Oh0yf8S4BbqQJsGPdWuIJCqAooMkh1YHc1qzpU/edit#gid=1111942432 Looking for Teammates] * [https://docs.google.com/spreadsheets/d/1Nmx75Oh0yf8S4BbqQJsGPdWuIJCqAooMkh1YHc1qzpU/edit#gid=604245810 Team Signup Sheet] == Quizzes == * Quiz 1: TBD * Quiz 2: TBD * Quiz 3: TBD == Course Information == === 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 the 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 [http://www.ics.uci.edu/~cs122a CS122A], which introduces students to the classical relational databases and SQL programming. === Using Cloud Services === We will heavily use cloud services (Amazon AWS and Google Cloud Platform) in the course. 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! In addition, you are welcome to participate in the [https://aws.amazon.com/education/awseducate/ AWS Educate] program, which can provide $100 AWS credits per student. We will provide more instructions about how to use their services to deploy your projects. We will also use Google Cloud Platform (GCP) as well, which provides $300 free trial credits at [https://cloud.google.com/free/ Google Cloud Free Trial]. === 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 (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, no inhibitions about working in groups and learning from each other. '''If you are not sure whether you meet requirements, do talk to the instructor after the first lecture to make sure you are ready to take this course.''' === Grading Breakdown === Projects: 88% [[BR]]In-class Quizzes: 11% [[BR]]Participation in EEE Class Evaluation: 1% [[BR]] For all the graded projects and exams, if you disagree with the grading, you can discuss with us within '''two weeks''' after they are returned. After that, all the grades will be finalized. For each project demo, we assume each group can provide their own computing environment (either a laptop or a remote desktop) to show the demo. If you cannot provide such an environment, please let us know before the demo, so that we can find a solution. === Textbooks === Many online tutorials. === Using Other Domains === Our main projects are using the movie domain, with provided schemas, data, and required functionalities. Students are encouraged to choose another domain you are familiar with, and use this domain to develop the projects. If you make this choice, the projects can be more fun! At the same time, it also requires additional effort to come up with schemas (comparable to the movie database), sample data, and similar features. Since later projects rely on earlier ones, you cannot change the domain in the middle of the quarter. As a reward, we will give '''5% extra credit''' to each of the five projects. Please specify this decision clearly in your first submission. Students need to make the complexity of their proposed projects comparable to Fabflix. Otherwise, we reserve the rights to deduct points. Also please make sure NOT to do the project for other non-CS122B obligations. You are highly recommended to talk to us before deciding the domain to use. === Using Github === You are required to use Github to manage your source code. Here are the [https://grape.ics.uci.edu/wiki/public/wiki/cs122b-2019-winter-project1-git instructions]. === Working in Groups === Working together on projects is '''strongly encouraged'''. You can form groups of no more than ''2 (two)'' students and submit one homework solution per group making sure that the names of all the group members appear on the first page. Work in groups will be graded on a per group basis. Students may leave their existing group in the quarter. But they cannot join any new group after the end of the '''second week'''. For each group splitting, the group members should tell the instructor at least '''two weeks''' before the corresponding project/homework 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. === Award === The top 2 students who made the most contributions to Piazza (e.g., providing high-quality answers, decided by the staff) will receive 1% extra credit each on the overall grade. === Project Late Policy === * The official due date for each assignment is listed here on the wiki, and it is expected that students will turn the work in on or before that date. * We will offer a '''24-hour grace period''' for each assignment, and will therefore 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, then your real score will be 87-10=77 points. Notice that EEE will only keep the latest submission. If so you submit or resubmit the project after the deadline, it will be considered as a late submission. * Late assignments will NOT be accepted beyond the grace period, so do always aim to be on time! Please don't even ask, as this is what the 1-day 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 [http://www.ics.uci.edu/ugrad/policies/index.php#academic_honesty http://www.ics.uci.edu/ugrad/policies/index.php#academic_honesty]to read their 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. === Project Overview === [[Image(CS122B-overview-2019-winter.png, 500px)]] ----