This course meets Wednesdays from 5:15 to 6:45pm @ Towne 311. For OH times, check the staff page.

📚 Topics

This course provides an introduction to modern JavaScript: frameworks, design patterns, techniques, and best practices used to create robust applications both server-side and client-side. The emphasis will be on sampling a wide range of JavaScript use cases. The topics covered will include:

This course is most useful for students who have some programming and web development experience and want to develop moderate JavaScript skills to be able to build complex, interactive applications.

There are many, many JS frameworks (far more than we can cover in this course). Our goal is to teach relevant frameworks and concepts which will enable you to pick up any other framework upon completing the course.

🫵 Prerequisites

🧱 Structure

There will be no quizzes or exams.

We currently plan to hold 15 lectures total. About 2/3 of the semester will be going through vanilla + React + Express + Mongo, before holding lectures that focus more on specific modern/popular JS techniques.

We currently plan to have one assignment per week, which is unlocked at the end of that week's lecture, and due by the start of the next week's lecture. Starting in November, we will start a final project, which will take you through to the middle of December (due before reading days).

Academic Integrity

This section doesn't have an emoji in the title because we want you to take this seriously.

We actively encourage using Google, and have no problem with students using LLMs like ChatGPT to better understand problems they face and possible solutions. Don't copy/paste from online sources, or students who have already taken the course.

Don't have mid-level discussions with other students - implementation detail should be individually authored. However high-level discussions like overall homework goals and structure, or low-level discussions like syntax or built-in function usage are totally fine.

🚔 Grading Policies

Each assignment will be graded out of 75 for correctness, and 25 for best practices. ESLint errors will be scored deductively, with a max of -15 points. Check the style page for guidelines. Your first 8 homeworks add up to 70% of your total grade, and the final project will be 30%.

You have 3 free late days to use throughout the course. A single assignment can use at most 2 late days. After this, late submissions will be docked 10% for every day late. Late days are rounded up and counted in increments of 1 day (e.g. 1 hour is 1 day, 23 hours is a day, 25 hours is two days). Additional extensions can be granted only in extenuating circumstances.

If a submission doesn't run (i.e. has build errors), we will not be lenient — you will likely receive zero credit. Please start assignments early and use office hours to your advantage.

Attendance is not mandatory for every lecture, but lectures are not recorded, so we highly recommend coming weekly to make the most of this class. We don't expect everyone to have perfect attendance, but do note that if we notice you missing the majority of lectures, up to 3% will be docked from your overall grade.

📝 Logistics

We use Ed for discussion, to which you should already be invited automatically.

All detailed course info can be found on this website, including all lectures we hold, and full assignment writeups. We are using GitHub Classroom for assignments, which will set you up with starter templates you can work from. We will (at least 3 days after due dates) be grading through Canvas.

All 19xx courses have a shared "lecture" which meets for the first three weeks at the start of the semester and does not meet after. The "recitation" as listed in PennInTouch is the actual course. This meets once a week throughout the entire semester.

Check the development page to get set up!

📢 Feedback

Your feedback is important to us! Let us know here if you have thoughts, ideas, complaints, or any good jokes.