CSC309: Programming on the Web
University of Toronto - Fall 2024
Lectures
Tuesdays 5-8 (KP 108)
Thursdays 5-8 (BA 1170)
Office hours
Tue & Thu 7-8 (after lecture)
Other times: by appointment
Description
Schedule
Team
About the course

An introduction to software development on the web. The course covers the development of programs that operate on the web and survey of technological alternatives, with emphasis on modern web development technologies. Concepts, including the internet and the web, static client content, dynamic client content, dynamically served content, data management, web development processes, deployment, and containerization are discussed. It features a comprehensive project for students to showcase their understanding over the course content.

Learning outcomes

At the end of the course, you will:

  • Understand the concept of web, servers, and clients
  • Gain solid knowledge about the different components of a web app
  • Learn how to develop the back-end of a web app with Next.js and Prisma
  • Learn how to develop the front-end of a web app with React
  • Learn how to publish and deploy your app to the internet using Docker
Pre-requisites
  • Software Tools & System Programming (CSC209)
  • Recommended co-requisite: Introduction to Databases (CSC343)
What is the target audience?

This course is suitable for anyone interested in learning web programming and may be seeking a relevant job in the future. It assumes no prior knowledge or experience in web development. Concepts will be discussed from the very basics. However, the focus will be on practical and up-to-date technologies.

Assessment

Assessment will be done through weekly exercises, a project, and exams. Each one is described in detail below.


Weekly exercises

Every week, you will be given a handful of small problems related to the topics discussed at the lecture. The exercises are designed to help you understand the concepts better and gain practical experience. Due to the educational nature of the exercises, the auto-grader will be provided to you, so you can check your answers before submission.

You should submit your solutions to Markus every Thursday by 3pm. Note that because of the number of exercises, their relatively low impact on your final grade, and the availability of the auto-grader, no late submissions, extensions, or remark requests will be accommodated. Your best 9 out of 11 submissions will count for grading.

Keep in mind that the exercises are meant to give you some initial practice with the topics. Therefore, it is important to do them yourself and understand the solutions. It will be possible to satisfy the auto-grader without fully developing the solution. But grading is not the purpose of the exercises, and it might impact your ability to do the project or exams.


Project

The project simulates a real-world web application that you might be asked to develop as a freelance web developer. Even though the scope is small, it is designed to give a sense of what creating a real website and working as a full-stack developer would entail. For the project, you can form groups of 2 or 3 members. You can also do it alone, but it is not recommended as the workload is excessive for one person. The topic of the project is an online code execution platform. Details will be provided once the project handout is released.

You will deliver the project in two parts. In part 1, you will deliver the backend of the application. In part 2, you will develop the frontend, connect the backend to it, and deliver the full web application.

Grading will take place through interview sessions with TAs. They will work with your website to check if the requirements are implemented correctly. Also, they will ask each member questions about their role and the code they have written. The grade for the former will be shared among all members, while the latter will yield individual grades based on each member's participation and understanding of the entire submission.


Examination

There will be a midterm exam during week 5 of the lectures, as well as a final exam at the end of the semester. The exams will be held in person and will be closed-book. However, you will be allowed to bring one letter-sized paper with hand-written notes on both sides. Note that printed or typed notes are not allowed. The exams are designed to test your understanding of the concepts, architectures, and practices discussed in the course. There will not be any questions about specific syntax, commands, function names, etc.


Grading breakdown
  • Weekly exercises: 10%
  • Midterm: 10%
  • Final exam: 30%
  • Project part 1: 20%
  • Project part 2: 30%

Note that the final exam is cumulative and will cover all the topics discussed in the course. To pass the course, you need to have a final grade of at least 50%, as well as a grade of 40% or above in the final exam.

Late submissions

No late submissions will be accepted for the weekly exercises. For the project, late submissions will be accepted with a penalty of 10% per day, up to a maximum of three days late.

If you are registered with Accessibility Services, you might be entitled to extensions on the project deadlines. In that case, email the instructor (via the course-related email) at least one week before the deadline and request the extension. Note that individual entitlements will be adjusted to the size of the team. For example, if one member of a team of two is entitled to 7 days of extensions, the team will be granted ⌈7/2⌉=4 days.

Remark Policy

No remark requests will be accepted for the weekly exercises. For the project, you may request a remark for the interview part of the grading. However, the request must be submitted within three days of receiving your grade through Markus or by email to the instructor or the lead TA. You must point out specific grading errors in your request, and the entire group must agree to it. Keep in mind that your entire work will be re-evaluated, and your grade may increase, decrease, or remain the same.

Missed Term Work

To request special consideration, bring supporting documentation to the instructor in person during office hours at least one week in advance of the due date.

In the event of illness or another unforeseen event, please contact the instructor (via the course-related email) and provide supporting documentation within one week of the missed work. You must also declare your absence on Acorn. Do not wait until the due date has passed. It is always easier to make alternate arrangements before the due date.

Academic Integrity

Honesty and fairness are fundamental to the University of Toronto’s mission. Plagiarism is a form of academic fraud and is treated very seriously. You are also expected to read the handout How Not to Plagiarize and to be familiar with the Code of Behavior on Academic Matters.

You are allowed to search the internet, use online resources, open-source codes, and generative AI (e.g., ChatGPT) to help you with the project. However, sharing even a small piece of code with other teams is strictly prohibited (whether giving or receiving).

Note that All work that was not written by you or your teammates must be cited in the code, including open-source codes and code created by generative AI.