Skip to content

Commit 2e70a0d

Browse files
committed
chore: migrate summer content over
1 parent 3c91aef commit 2e70a0d

File tree

171 files changed

+19570
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

171 files changed

+19570
-0
lines changed

.gitignore

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
.DS_Store
2+
3+
.gradle
4+
/build/
5+
6+
# Ignore Gradle GUI config
7+
gradle-app.setting
8+
9+
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
10+
!gradle-wrapper.jar
11+
12+
# Cache of project
13+
.gradletasknamecache
14+
15+
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
16+
# gradle/wrapper/gradle-wrapper.properties
17+

README.md

+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
# CS 3220 - Intro to Web Programming
2+
3+
# Intro
4+
5+
Welcome to intro to web programming summer session! In this class, we will learn
6+
how to build web application together from the front-end to back-end and putting
7+
everything together at the end!
8+
9+
In first half of class, we will start the class by learning front end (HTML, CSS and
10+
JavaScript). Labs and homework in this first quarter of the class will be
11+
focusing on building the user interface and its behavior.
12+
13+
In second half of the class, we will be building the back-end in Java to support
14+
up the data storage and processing.
15+
16+
In back-end session, we will start by learning Java Servlet and JSP. Why?
17+
A lot of existing companies, if having Java back-end, may still have these legacy
18+
applications implemented in this manner. We could start by learning Servlet and JSP.
19+
Then, we will learn how to refactor from legacy to modern approach such as
20+
implementing a RESTful service.
21+
22+
Moreover, we will also be learning micro-services architecture by having students'
23+
servers communicating to the worker simulation server through RESTful service calls.
24+
25+
In the end, we should have a runnable application for you to show as portfolio!
26+
27+
## Prerequisites
28+
29+
Please note that you are expected to know Java programming before the class. In
30+
this class we will be using Java quite a lot on the back end. If you are not
31+
experienced enough in Java programming. Please find time to self study! A gentle
32+
suggestion would be studying your old text book!
33+
34+
## Resources
35+
36+
### Class
37+
38+
* [Syllabus](SYLLABUS.md)
39+
* [Classroom chat room](https://csulacs3220summer2017.slack.com/)
40+
41+
> If you don't have access to the chat room, please ask me in person because I
42+
will have to send you an invitation.
43+
44+
### Recommended reading
45+
46+
* [How to ask question by me](https://github.com/csula/Utilities/blob/master/general-knowledge/how-to-ask-question.md)
47+
* [Clean architecure by Uncle Bob](http://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html)
48+
* [System design primer](https://github.com/donnemartin/system-design-primer)
49+
* [Developer Roadmap](https://github.com/kamranahmedse/developer-roadmap)
50+
* https://www.youtube.com/watch?time_continue=114&v=sBzRwzY7G-k

SYLLABUS.md

+141
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,141 @@
1+
# Web and Internet Programming
2+
3+
## Course Overview
4+
5+
### Objective
6+
7+
Learning full-stack web development in HTML, CSS, JavaScript & Java.
8+
9+
### Expectation
10+
11+
Students are expected to have strong Java programming background.
12+
In addition, students are expected to devote a large amount of time learning
13+
how to implement techniques learned in class.
14+
15+
## Logistics
16+
17+
- **Instructor** Hsiang-Yu (Eric) Liao [[email protected]](mailto:[email protected])
18+
- **Lecture** Saturday 10:00 AM to 4:00 PM
19+
- **Office Hours** Saturday 9:30 AM to 10:00 AM, 4:00 PM to 5:00 PM or online 24/7
20+
- **Office Hours Location** E&T A-309
21+
- **Location** E&T A-309
22+
- **Text Book** No text book is required as all required reading will be hosted on Github.
23+
24+
## Course Objectives
25+
26+
* Git/Github
27+
* HTML & CSS
28+
* JavaScript
29+
* Java Servlet
30+
* JSP & JSTL
31+
* MySQL
32+
* Vue.js
33+
* Java Jersey framework
34+
35+
## Grading Allocation
36+
37+
* Labs (8) 40 pts
38+
* Homework (4) 40 pts
39+
* Midterm 10 pts
40+
* Final 10 pts
41+
* Attendance 5 pts
42+
43+
## Grading Scale
44+
45+
* A: 94 to 100
46+
* A-: 90 to 93
47+
* B+: 85 to 89
48+
* B: 80 to 84
49+
**Graduate students are required to obtain a grade 80 or above to pass the course**
50+
* B-: 77 to 79
51+
* C+: 74 to 76
52+
* C: 70 to 73
53+
**Undergraduate students are required to obtain a grade 70 or above to pass the course**
54+
55+
## Lab rules
56+
57+
In lab, everything is open (books, notes, internet, friends, colleagues). In other word,
58+
you are free to ask for helps in order to finish the lab in time.
59+
60+
> Please note the difference between helping and giving out solution. Copying
61+
others' solution is considered as cheating.
62+
63+
> If you are not sure what is helping. Consider yourself as a mentor for other
64+
students. You are helping them by **teaching** them. While teaching, hopefully,
65+
you can learn some from it as well!
66+
67+
There is only one rule to the lab -- all lab works are due in class unless notify otherwise.
68+
All the requirements of the lab will be given in class, and the lab work will be
69+
due by the end of class.
70+
71+
## Midterm/final rules
72+
73+
Rules for midterm & final are very similar to lab --
74+
75+
* Open book/note
76+
* Open internet
77+
* All works are due in class
78+
* You may ask question to clarify if you are not clear
79+
80+
Except the following difference:
81+
82+
* No discussion/IMs with your friends&colleagues
83+
* Midterm&final is supposed to be testing individuals
84+
* Not like lab, I will not be as helpful
85+
86+
## ADA Statement
87+
88+
Reasonable accommodation will be provided to any student who is registered with
89+
the Office of Students with Disabilities and requests needed accommodation.
90+
91+
## Academic Integrity
92+
93+
Cheating on assignments and exams will not be tolerated. All parties involved
94+
will receive a grade of **F** for the course and be reported to the Computer
95+
Science Department.
96+
97+
## Course Schedule
98+
99+
The schedule below is tentative and is subject to change.
100+
101+
| Week # [date] | Topic | Notes |
102+
| ------------------ | --- | --- |
103+
| 1 [06/03] | [Introduction][1] | Set up environment |
104+
| 2 [06/10] | [HTML & CSS][2] | [Lab 1][16] |
105+
| 3 [06/17] | [Intro to JavaScript][3] | [Lab 2][17] |
106+
| 4 [06/24] | [Intro to JavaScript][3], [Java Servlet][4] | [Lab 2][17] |
107+
| 5 [07/01] | [Java Servlet][4] | [Lab 3][18], [Homework 1][12] |
108+
| 6 [07/08] | [Midterm][5], [JSP & JSTL][6] | [Lab 4][19] |
109+
| 7 [07/15] | [JSP & JSTL][6] | (No in class room meeting) |
110+
| 8 [07/22] | [Database][7] | [Lab 5][20], [Homework 2][13] |
111+
| 9 [07/29] | [Database][7] | [Lab 6][21], [Homework 3][14] |
112+
| 10 [08/05] | [Modern Java Web framework][10] | [Lab 7][22] + [Extra Credit (See lab 7)][22], [Homework 4][15] |
113+
| Final [08/12] | [Final][11] | [Lab 8][23], Similar to midterm, due in class |
114+
115+
> [Lab 8][23] will be a make up lab so you can choose one of the worst lab you
116+
have done before and work on it so I will re-grade it again.
117+
118+
[1]: notes/introduction.md
119+
[2]: notes/html_css.md
120+
[3]: notes/javascript.md
121+
[4]: notes/java_servlet.md
122+
[5]: notes/midterm.md
123+
[6]: notes/jsp_jstl.md
124+
[7]: notes/database.md
125+
[8]: notes/web_architectures.md
126+
[9]: notes/front_end_framework.md
127+
[10]: notes/modern_java_web.md
128+
[11]: notes/final.md
129+
[12]: notes/homeworks/homework1.md
130+
[13]: notes/homeworks/homework2.md
131+
[14]: notes/homeworks/homework3.md
132+
[15]: notes/homeworks/homework4.md
133+
[16]: notes/labs/lab1.md
134+
[17]: notes/labs/lab2.md
135+
[18]: notes/labs/lab3.md
136+
[19]: notes/labs/lab4.md
137+
[20]: notes/labs/lab5.md
138+
[21]: notes/labs/lab6.md
139+
[22]: notes/labs/lab7.md
140+
[23]: notes/labs/lab8.md
141+

build.gradle

+65
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/*
2+
* This build file was generated by the Gradle 'init' task.
3+
*
4+
* This generated file contains a commented-out sample Java project to get you started.
5+
* For more details take a look at the Java Quickstart chapter in the Gradle
6+
* user guide available at https://docs.gradle.org/4.0/userguide/tutorial_java_projects.html
7+
*/
8+
9+
// Apply the java plugin to add support for Java
10+
apply plugin: 'java'
11+
apply plugin: 'war'
12+
apply from: 'https://raw.github.com/akhikhl/gretty/master/pluginScripts/gretty.plugin'
13+
14+
// In this section you declare where to find the dependencies of your project
15+
repositories {
16+
// Use 'jcenter' for resolving your dependencies.
17+
// You can declare any Maven/Ivy/file repository here.
18+
jcenter()
19+
}
20+
21+
// In this section you declare the dependencies for your production and test code
22+
dependencies {
23+
// The production code uses the SLF4J logging API at compile time
24+
compile 'org.slf4j:slf4j-api:1.7.24'
25+
// Java Servlet
26+
compile group: 'javax.servlet', name: 'javax.servlet-api', version: '3.1.0'
27+
// JSTL
28+
compile group: 'javax.servlet.jsp', name: 'javax.servlet.jsp-api', version: '2.3.1'
29+
// MySQL JDBC
30+
compile group: 'mysql', name: 'mysql-connector-java', version: '5.1.43'
31+
// JAX-RS -- Jersey
32+
compile group: 'javax.ws.rs', name: 'javax.ws.rs-api', version: '2.0.1'
33+
// JAX-RS -- Jersey Servlet
34+
compile group: 'org.glassfish.jersey.containers', name: 'jersey-container-servlet', version: '2.25'
35+
// JAX-RS -- Jersey Jackson
36+
compile group: 'org.glassfish.jersey.media', name: 'jersey-media-json-jackson', version: '2.25.1'
37+
38+
39+
// Declare the dependency for your favourite test framework you want to use in your tests.
40+
// TestNG is also supported by the Gradle Test task. Just change the
41+
// testCompile dependency to testCompile 'org.testng:testng:6.8.1' and add
42+
// 'test.useTestNG()' to your build script.
43+
testCompile 'junit:junit:4.12'
44+
}
45+
46+
gretty {
47+
httpPort = 8080
48+
contextPath = '/'
49+
}
50+
51+
// Javac related task to generate classpath for linter
52+
task generateClasspath {
53+
description 'Generate classpath file for Javac linter'
54+
ext.destFile = file("$buildDir/classpath.txt")
55+
outputs.file destFile
56+
doLast {
57+
def classpathString = sourceSets.main.runtimeClasspath.collect{ it.absolutePath }.join(File.pathSeparator)
58+
if (!destFile.parentFile.exists()) {
59+
destFile.parentFile.mkdirs()
60+
}
61+
assert destFile.parentFile.exists()
62+
destFile.text = 'export CLASSPATH="' + classpathString + '"'
63+
}
64+
}
65+

docs/project-scratch.md

+9
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,15 @@ have the backend server to define the resource name, type, exchange rate. And
3535
on the front end service running the incremental game while reading the backend
3636
server for the resource and its storage.
3737

38+
## Problems
39+
40+
Software engineering is all about solving problems. In this section, I want to
41+
summarize a couple problems I had in summer and what I want to accomplish:
42+
43+
* JavaScript wasn't covered in depth enough for students to use it effectively
44+
* Architecture wasn't taught well. Many students didn't know what architecture they were following even to the end.
45+
* Database abstraction can be cleaner. As for now, getting simple connection remains a lot more code snippets to resolve
46+
3847
## Fragments
3948

4049
It will be damn difficult for students who just start leaning web development

elm-package.json

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{
2+
"version": "1.0.0",
3+
"summary": "helpful summary of your project, less than 80 characters",
4+
"repository": "https://github.com/user/project.git",
5+
"license": "BSD3",
6+
"source-directories": [
7+
"."
8+
],
9+
"exposed-modules": [],
10+
"dependencies": {
11+
"elm-lang/core": "5.1.1 <= v < 6.0.0",
12+
"elm-lang/html": "2.0.0 <= v < 3.0.0"
13+
},
14+
"elm-version": "0.18.0 <= v < 0.19.0"
15+
}

final/.gitignore

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# elm-package generated files
2+
elm-stuff
3+
# elm-repl generated files
4+
repl-temp-*

final/elm-package.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"version": "1.0.0",
3+
"summary": "helpful summary of your project, less than 80 characters",
4+
"repository": "https://github.com/user/project.git",
5+
"license": "BSD3",
6+
"source-directories": [
7+
"."
8+
],
9+
"exposed-modules": [],
10+
"dependencies": {
11+
"elm-lang/core": "5.1.1 <= v < 6.0.0",
12+
"elm-lang/html": "2.0.0 <= v < 3.0.0",
13+
"elm-lang/http": "1.0.0 <= v < 2.0.0"
14+
},
15+
"elm-version": "0.18.0 <= v < 0.19.0"
16+
}

final/final

6.11 MB
Binary file not shown.

0 commit comments

Comments
 (0)