Skip to content

Commit ad066e7

Browse files
committed
project1 s22 main
0 parents  commit ad066e7

File tree

6 files changed

+844
-0
lines changed

6 files changed

+844
-0
lines changed

README.md

+83
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,83 @@
1+
# Overview of Project 1
2+
3+
In Project 1, you will build a substantial real-world database application of your choice. This project is split into three parts:
4+
5+
* [Part 1](./part1.md): come up with a web application and design the database on paper using ER-modeling.
6+
* [Part 2](./part2.md): implement your database by translating your model into a database schema and example data.
7+
* [Part 3](./part3.md): you have two options: (3a) implement a web front-end or (3b) expand your schema design.
8+
* 3a: you will implement an application in Python to read and write to the database, through a user-facing web front-end.
9+
* 3b: you will sebstantially expand your database design and incorporate it into your database from part 2. No Python programming is needed.
10+
11+
Pick an application that you will enjoy working with, because you will be working on it for a substantial part of the semester!
12+
Try to pick an application that can be populated with real data, since it will make the application more interesting.
13+
14+
You will implement your web application Google Cloud. You'll be able to share the URL with your friends. It'll be awesome. See [programming.md](./programming.md) for details.
15+
16+
### Summary of Deadlines
17+
18+
* **2/4**: Find team-mate!
19+
* **2/7-18**: Meet with course staff to discuss your application and design. **Mandatory**
20+
* **2/25**: Submit Part 1
21+
* **3/21**: Submit Part 2
22+
* **4/15**: Submit Part 3
23+
24+
Note: you can only use late days for the project description submisson, not for finding a teammate nor for meeting with the staff. Please read the Project Lateness Policy carefully.
25+
26+
27+
### Teams of _exactly_ 2
28+
29+
* Use the class discussion board to find teammates!
30+
* Simply write the name and UNI of both members when submitting part 1.
31+
* [Write a contingency plan](./part1.md#contingency) in case your teammate drops the class.
32+
33+
34+
### Important notes:
35+
36+
* If you decide to drop the class, or are even remotely considering doing so, please be considerate and notify your team-mate immediately.
37+
* Do not wait until the day before the deadline to start working on the project, only to realize that your team-mate has dropped the class or moved to another planet. It is your responsibility to start working on the project and spot any problems early. You should be working _together_
38+
* Please check the Collaboration Policy web page for important information of what kinds of collaboration are allowed for projects.
39+
40+
41+
### Getting Help
42+
43+
We _strongly suggest_ you use the following approach when you encounter bugs. This is basically what
44+
professional software engineers and data scientists do:
45+
46+
1. Use Google or StackOverflow by searching for the error message
47+
1. Look for previous answers on the discussion board
48+
1. Ask on the discussion board. Include the following in your question:
49+
* what you're trying to do
50+
* describe the approach you took
51+
* the error message
52+
* what solutions you've tried
53+
1. Ask the staff in OH
54+
55+
56+
# project1-s22-main
57+
# 加微信 powcoder
58+
59+
# [代做各类CS相关课程和程序语言](https://powcoder.com/)
60+
61+
[成功案例](https://powcoder.com/tag/成功案例/)
62+
63+
[java代写](https://powcoder.com/tag/java/) [c/c++代写](https://powcoder.com/tag/c/) [python代写](https://powcoder.com/tag/python/) [drracket代写](https://powcoder.com/tag/drracket/) [MIPS汇编代写](https://powcoder.com/tag/MIPS/) [matlab代写](https://powcoder.com/tag/matlab/) [R语言代写](https://powcoder.com/tag/r/) [javascript代写](https://powcoder.com/tag/javascript/)
64+
65+
[prolog代写](https://powcoder.com/tag/prolog/) [haskell代写](https://powcoder.com/tag/haskell/) [processing代写](https://powcoder.com/tag/processing/) [ruby代写](https://powcoder.com/tag/ruby/) [scheme代写](https://powcoder.com/tag/drracket/) [ocaml代写](https://powcoder.com/tag/ocaml/) [lisp代写](https://powcoder.com/tag/lisp/)
66+
67+
- [数据结构算法 data structure algorithm 代写](https://powcoder.com/category/data-structure-algorithm/)
68+
- [计算机网络 套接字编程 computer network socket programming 代写](https://powcoder.com/category/network-socket/)
69+
- [数据库 DB Database SQL 代写](https://powcoder.com/category/database-db-sql/)
70+
- [机器学习 machine learning 代写](https://powcoder.com/category/machine-learning/)
71+
- [编译器原理 Compiler 代写](https://powcoder.com/category/compiler/)
72+
- [操作系统OS(Operating System) 代写](https://powcoder.com/category/操作系统osoperating-system/)
73+
- [计算机图形学 Computer Graphics opengl webgl 代写](https://powcoder.com/category/computer-graphics-opengl-webgl/)
74+
- [人工智能 AI Artificial Intelligence 代写](https://powcoder.com/category/人工智能-ai-artificial-intelligence/)
75+
- [大数据 Hadoop Map Reduce Spark HBase 代写](https://powcoder.com/category/hadoop-map-reduce-spark-hbase/)
76+
- [系统编程 System programming 代写](https://powcoder.com/category/sys-programming/)
77+
- [网页应用 Web Application 代写](https://powcoder.com/category/web/)
78+
- [自然语言处理 NLP natural language processing 代写](https://powcoder.com/category/nlp/)
79+
- [计算机体系结构 Computer Architecture 代写](https://powcoder.com/category/computer-architecture/)
80+
- [计算机安全密码学computer security cryptography 代写](https://powcoder.com/category/computer-security/)
81+
- [计算机理论 Computation Theory 代写](https://powcoder.com/category/computation-theory/)
82+
- [计算机视觉(Compute Vision) 代写](https://powcoder.com/category/计算机视觉compute-vision/)
83+

part1.md

+125
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
# Project 1, Part 1
2+
3+
* Assigned: 1/28
4+
* Due: Meetings by 2/18, final version on Gradescope on 2/25 @ 10 AM
5+
* 25% of overall Project 1 grade
6+
7+
In Part 1, you will propose a web application to build for the rest of Project 1. You will design the entity-relationship diagram and schema of the database, and do some setup for Part 2.
8+
9+
These directions are long, but please read them carefully before you start.
10+
11+
**Note**: If you observe holidays that overlap with this part of the project, please email the instructor to arrange for alternative deadlines within 2 days of the release date.
12+
13+
* [FAQs](#frequently-asked-questions)
14+
* [Project overview: Read this carefully before starting](./README.md)
15+
* [Staff Approval Meeting Signup](https://calendar.google.com/calendar/u/0/selfsched?sstoken=UUpOU05mUUpZYXk2fGRlZmF1bHR8YmE0YmE0M2MzNzkyYWZjOTcxYjRkMTBmNDNmNjA1NDc): Meet as a team to discuss the project with an IA or Professor Wu. We want to make sure the scope is appropriate. You should complete Step 1 before the meeting.
16+
* We will post zoom links for each staff member to use.
17+
<!--* CVN students still need to meet us for project 1 part 1, the local teammate can represent both of you. For teams that both students are remote, we will use Skype to meet. If you have a large time difference (e.g., singapore) then arrange so that the staff member knows.-->
18+
19+
20+
# Overview
21+
22+
This assignment consists of multiple steps. At a high level, you will
23+
24+
1. Find teammate
25+
1. Select an application, write a short proposal and construct the Entity-relationship diagram.
26+
1. Meet with staff for approval and feedback
27+
1. Revise proposal and E/R diagram, create SQL schema for the database.
28+
29+
If you're having trouble thinking of an application, look for a real dataset to design the application around. Some possible suggestions could be local government datasets like [NYC Open Data](https://opendata.cityofnewyork.us/), [Columbia Libraries catalog](https://library.columbia.edu/bts/clio-data.html), [Bio datasets](https://github.com/OpenGene/awesome-bio-datasets), [Political datasets](https://fivethirtyeight.com/features/why-were-sharing-3-million-russian-troll-tweets/), [Earthquake datasets](https://earthquake.usgs.gov/data/data.php), etc. There are many small shops, galleries, communities, that could benefit from a web applications too!
30+
31+
32+
### You Will Submit:
33+
34+
You will upload your final proposal as a PDF to Gradescope.
35+
36+
**Required** Application Proposal
37+
38+
* Describe the general "domain" of your application, construct an Entity-Relationship
39+
diagram, **and map it to a relational schema using the mapping technique
40+
that we will cover in class.**
41+
* Pick an application with a schema that is relatively substantial, but not too large.
42+
* E/R design should have ~5-10 entity sets and a ~5-10 relationship sets.
43+
You will get a sense if your design is too simple or too complex as diagram it.
44+
Discuss this with a TA during your advising session if you are in doubt.
45+
* Please use the ER diagram notations described in class. Do not use other notations you find -- there are too many and it will be impossible to assess!
46+
* Try to make your application interesting, including a variety of different kinds of attribute
47+
domains (e.g., strings, integers, etc.) and relationships with different key and
48+
participation constraints.
49+
* Include as many relevant constraints for your application from the
50+
real world as possible in your E/R diagram.
51+
52+
<a name="contingency"></a> **Optional but strongly recommended: Contingency plan for two-person teams**:
53+
Since students may drop classes, and to prevent last-minute surprises, we suggest that you
54+
write a "contingency plan" in case a team-mate drops the class later in the semester.
55+
56+
* Indicate how you will simplify the project for a single person to complete.
57+
* Revised ER design with roughly 3-7 entity sets and 3-7 relationship sets.
58+
* If your teammate drops the class, you will complete the contingency version instead of finding a new teammate.
59+
60+
**If you choose not to submit this plan when you submit Part 1 and your team-mate drops the class later, you will have to complete the original project. No exceptions will be made at that point.**
61+
62+
63+
64+
## Step 1: Prepare for meeting with course staff
65+
66+
1. Find a team-mate and indicate them when submitting Part 1.
67+
1. Write an informal one-paragraph description of the application (less than 20 lines). Highlight interesting and challenging parts. The more concrete your written description, the more efficient and useful the meeting with the class staff will be. This paragraph should include:
68+
* A high-level description of the general domain of the application.
69+
* Examples of entities and relationship sets, attributes and real-world constraints you will have.
70+
* What data you will use to populate your database, you can use real data or make up your own.
71+
* Provide details about how users will interact with the site, please describe the general "entities" that are involved, and what types of operations users can perform. For example, if your website is based on the Internet Movie Database, the user might find actors of a moview, read review, add it to watchlist and find similar movies, etc.
72+
1. Write a short description of your contingency plan (see above).
73+
1. Construct the E/R diagram for the application. You will go over it with the staff during the meeting.
74+
75+
76+
## Step 2: Revise and complete Part 1
77+
78+
1. Meet with a TA or the instructor to ensure the design is appropriate and get feedback:
79+
* This 10-15 minute meeting is required.
80+
* We will have expanded office hours during that week.
81+
* At least one must attend. It's much better if both attend.
82+
* **At least 24 hours before your meeting**, submit a draft version of your materials on Gradescope (ungraded).
83+
* **It is a good idea to come earlier in the week.** If you choose to come later and it is too crowded, then you will be unhappy.
84+
1. After the meeting, modify the description and E/R diagram based on the feedback.
85+
1. Map your E/R diagram into a relational schema in SQL, preserving the constraints.
86+
1. Submit a digital copy of the following on the due date:
87+
1. Revised one-paragraph description of the application
88+
2. Revised Entity-relationship diagram
89+
3. **Resulting SQL schema**
90+
4. Revised contingency plan (optional)
91+
1. Keep a copy of all these materials for yourselves, since you will need them for Parts 2 and 3
92+
93+
94+
# Grading
95+
96+
Your grade will be split as follows:
97+
98+
* (7pts) Meeting with class staff: If you come to the meeting prepared with your written description and E/R diagram, you can expect to get all points, even if you are asked to make changes or revisions to your proposal.
99+
* (6pts) Quality of final one-paragraph description of your application: We will evaluate the overall quality of your final one-paragraph description of your application, including how thoroughly you incorporated any revisions suggested during your meeting with the staff.
100+
* (6pts) Quality of E/R diagram: We will evaluate how well your E/R diagram models your proposed application, including how well you modeled any relevant real-world constraints.
101+
* (6pts) Quality of your SQL schema: We will evaluate how well you mapped your E/R diagram, including constraints, into a SQL schema using the technique that we covered in class.
102+
103+
If the submission is difficult to read and the staff cannot easily decipher what is drawn/written, then
104+
you will not recieve points for that part.
105+
106+
107+
# Frequently-Asked Questions
108+
<a name="faq"></a>
109+
110+
* I have an idea that requires that I work alone. Can I?
111+
* No, sorry. Please modify your project idea so that it becomes appropriate for a two-person team. Yes, being forced to work with others is sometimes painful, but I believe that some of the most valuable lessons you learn in University are not the course content.
112+
113+
* Can we have a team of 3, 4, or 12 students?
114+
* No, sorry. For fairness and to make it possible for us to grade them, the projects need to have similar size and scope.
115+
116+
<!--
117+
* Can I use my favorite DBMS instead of PostgreSQL?
118+
* No, sorry. We would like to be more flexible but don't have the staff to handle several diverse systems and platforms.
119+
-->
120+
121+
* Can I use Java (or something that's not Python) for Option 3?
122+
* No, sorry. Please see the answer to the previous question.
123+
124+
<!--* I'm a CVN student, is the IA meeting mandotory?
125+
* Yes, you still need to meet us for project 1 part 1. The local teammate can represent both of you, if both students are remote, we will use Skype to meet. -->

part2.ipynb

+98
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
{
2+
"cells": [
3+
{
4+
"cell_type": "code",
5+
"execution_count": null,
6+
"id": "cbc93a60",
7+
"metadata": {
8+
"scrolled": false
9+
},
10+
"outputs": [],
11+
"source": [
12+
"!pip3 install sqlalchemy # ORM for databases\n",
13+
"!pip3 install ipython-sql # SQL magic function"
14+
]
15+
},
16+
{
17+
"cell_type": "code",
18+
"execution_count": null,
19+
"id": "67c934d6",
20+
"metadata": {
21+
"scrolled": false
22+
},
23+
"outputs": [],
24+
"source": [
25+
"%load_ext sql"
26+
]
27+
},
28+
{
29+
"cell_type": "markdown",
30+
"id": "9435162c",
31+
"metadata": {},
32+
"source": [
33+
"## Connect With Your Credentials\n",
34+
"\n",
35+
"The current connection string DOES NOT WORK! \n",
36+
"Make sure to change the YOURUSER:YOURPASSWORD part of the connection string to your team's account information!"
37+
]
38+
},
39+
{
40+
"cell_type": "code",
41+
"execution_count": null,
42+
"id": "fa727023",
43+
"metadata": {
44+
"scrolled": false
45+
},
46+
"outputs": [],
47+
"source": [
48+
"%sql postgresql://YOURUNI:[email protected]/w4111"
49+
]
50+
},
51+
{
52+
"cell_type": "code",
53+
"execution_count": null,
54+
"id": "7624a542",
55+
"metadata": {
56+
"scrolled": false
57+
},
58+
"outputs": [],
59+
"source": [
60+
"%sql select 1"
61+
]
62+
},
63+
{
64+
"cell_type": "code",
65+
"execution_count": null,
66+
"id": "8ef51aa2",
67+
"metadata": {
68+
"scrolled": false
69+
},
70+
"outputs": [],
71+
"source": [
72+
"%%sql select 1 as a,\n",
73+
"2 as b"
74+
]
75+
}
76+
],
77+
"metadata": {
78+
"kernelspec": {
79+
"display_name": "Python 3",
80+
"language": "python",
81+
"name": "python3"
82+
},
83+
"language_info": {
84+
"codemirror_mode": {
85+
"name": "ipython",
86+
"version": 3
87+
},
88+
"file_extension": ".py",
89+
"mimetype": "text/x-python",
90+
"name": "python",
91+
"nbconvert_exporter": "python",
92+
"pygments_lexer": "ipython3",
93+
"version": "3.8.3"
94+
}
95+
},
96+
"nbformat": 4,
97+
"nbformat_minor": 5
98+
}

0 commit comments

Comments
 (0)