Category | Difficulty |
---|---|
HW | 4 |
Projects | 6 |
Exam | 5 |
This is a class that teaches you how to build a website, from frontend (HTML and CSS) to backend (routing and database). It mainly focuses on the Django framework in Python, but to fully control the web page's behavior you will also need to know Javascript.
- HTML & Css
- Java Script
- HTTP
- The Django Framework
- AJAX
- jQuery
- Websocket
- Bootstrap
- Transaction
- Security
- Internationalization
- Scalability
-
HW: There will be 7 homework assignments in total, one each week, only first half of the semester. The first three will be implementing of a project like Wordle or a web calculator. The last four will be implementing a mini social network.
-
Project: The second half of the semester will focus on the team project. You can do anything you want with the project and by the end, you are expected to deply it to the cloud. There are usually three people in a team. You can choose to either pick your own teammates or pair randomly with students in the class. Your project is going to takes up 30% percent of your final grade. The grader will try to hack your website during your 20 minute presentation. So make sure your project takes care of all the edge cases and consider how someone can attack a webapp, including XSS attacks, CSRF attacks, SQL injection. You are expected to incorporate a functionality not taught in class in your app. Some common examples of this are Google Maps API integration, OAuth, and web sockets. One of your goals is also to prevent your webapp from crashing even when the grader is attacking it. You will be expected to keep a record of your work and present during biweekly sprints.
-
In-class Quizzes: There will be a quiz in the end of of almost every class to give you a bit of practice of the material covered. The quizzes can be terrifying at the first glance, but don't worry, the professor will go over the solution. so pay attention! Keep a record of the quiz questions (like saving a PDF of the Google Forms and correct answers for exam studying purposes).
- Try to understand every line in the in-class quizzes, lots of the homework solutions can reference from these quizzes. After learning every part, it will be helpful for you to finish your homework.
- Start the assignments as soon as you can and ask for help at office hour or after class.
- Start your project as soon as possible, there may be lots of minor errors you need to test and the TAs will try to hack your project.
- Work on your project progressively and have regular syncs with your team. It will greatly benefit you to work on the project regularly and seek help if needed, and it will prevent you from cramming as your presentation date draws near.
- Hw 5 & 6 are the most challenging and time-consuming assignment of the class.
- Go to lecture and don't miss the quiz.
- Leave enough time for your project's cloud deployment.
- Try to do some tests before releasing your project. Such as asking other friends to play with your project and receive some recommendations. They might find some bugs you did not notice before.
- Presentation slots are assigned based on late days used. This class has a very generous late day policy (~5 days per assignment), but you select your presentation slot in order of who used the least amount of late days. Therefore if you use 0 late days, you select your slot first. The presentations occur over the course of 1 week, and groups who present earlier have to finish their whole project considerably earlier. So it's advantageous to use less late days because you will be able to have more choice over when you have to complete your project. The latest presentation slots fill the quickest.
- W3Cschool. The resource to teach you how to write the HTML, CSS and Javascript. This is helpful for homework 1-3.
- Django document. A lots of students are confused about how to write the Django code. This document provides lots of examples about how to use them. When doing the homeworks 4-6, this document is super helpful
- Bootstrap. A good CSS source for you to decorate your website prettier. This website is helpful for building your project.