Syllabus

Course Description

This course will provide a comprehensive introduction to JavaScript, one of the most widely used programming languages for web development. We will focus on the fundamentals of JavaScript and what makes it unique from other programming languages. Students will be given the opportunity to explore contemporary topics of interest in JavaScript and web development, such as modern frameworks and libraries. Through projects, participants will develop the skills necessary to build dynamic, interactive web applications.

This section (201) of CIS 1962 will be focused on working towards building full-stack web applicaitons using JavaScript and modern frameworks. This section will not go in depth into topics like exploring specific backend libraries and solutions for the web, rather it aim to equip students with the fundamentals of making robust web applications and encouraging students to explore specific libraries and technologies on their own.

Both sections of CIS 1962 will share office hours, meaning that you can attend Eunsoo's office hours from section 202 if you have any questions or need help!

Prerequisites

CIS 1200

This course will assume that you have basic knowledge of some other programming language, whether it's Java, Python, or some other programming language. Additionally, knowledge of version control in Git will be helpful throughout the course for homework submissions and final project collaboration if you choose to work in a group. Please speak to the instructor if you do not meet this requirement but you have similar experience, or if you have any questions about the content of the course. Prior knowledge of HTML and CSS are not required, and will be taught during lectures.

Grading

Homework (60%)
Final Project (35%)
  • Attendance (5%)
  • Homework (60%)
  • Final Project (35%)

Attendance

Attendance will be taken through online polling, which will also be used for in-class questions and quizzes. Attendance will not be mandatory, but lectures will not be recorded, so it is in your best interest to attend as many classes as possible. If we notice you are missing a majority of lectures in the semester (7+), these points will be deducted from your final grade.

If you do need to miss a lecture or have extenuating circumstances, please feel free to contact the course staff. Lecture slides and code will be provided after each lecture on both the course website and Ed Lessons.

Homework

There will be 8 homework assignments, which are primarily structured coding assignments within JavaScript. Grading will be based on correctness based on certain test criteria and best coding practices, including style. Submitted code will often be manually graded, but subject to run tests for correctness and ESLint for style errors based on a pre-defined style guide.

Final Project

The final project for this course will be an open-ended synthesis of all the JavaScript topics students will learn in this course. The project will be assigned almost month in advance to allow project proposals and planning to occur. This project should be considered a chance for students to make something they can be proud of, and display in their portfolios as a mark of their experience with JavaScript. More details about the content of this final project will be posted closer to release date.

This project can be done solo in a group. It will be mandated that the project be hosted on GitHub and make full use of version control.

Late Policy, Extensions, and Exceptions

Late Submission Policy

We know that stuff happens during the semester that's out of your control. Midterms, interviews, and other unforeseen circumstances may prevent you from submitting assignments on time. Thus, we have a 72 hour late submission policy, where each assignment can be submitted up to 72 hours late for 10% off of the grade. We will not accept submission after this deadline unless an extension is granted by the instructor.

Resubmission and Regrades

If you would like to resubmit an assignment after it is graded, or if you miss the original deadline and the late submission period, you will have an opportunity to resubmit for a regrade at the end of the semester. We will open a Google Form at the end of the semester to facilitate these submissions, so look out for an Ed post about it if you are interested. All resubmission are subject to a 20% penalty, meaning that the max grade you can get is 80% for resubmissions.

Academic Integrity

Implementation details for homeworks should be individual work, authored by the student without help from others, and reflect work associated specifically made for this class, and no other past or present classes.

We encourage students to use Google and modern AI/LLM tools for learning and seeking out answers to conceptual questions. However, we will not allow students to copy/paste code from online sources or directly lifted from code generation by AI. While short generation is allowed, action will be taken if we suspect excessive AI code generation for assignments. For instance, copying the exact or paraphrased assignment instructions as a prompt to the AI under the intent to generate code, and using that code verbatim or in full in your final submission is explicitly not allowed. This would fit under these terms of "excessive code generation" and would reflect an imbalance of individual and AI effort shown in your work. We reserve the right to take points off from assignments should we detect this level of AI usage.

Homework will be submitted to GitHub classroom and subject to checks for plagiarism. Submitted homework should reflect one's own individual work, any attempts to copy or plagiarize code will be penalized. Please review Penn's Code of Academic Integrity for more details.

AI Guidelines

The use of AI tools, such as ChatGPT, GitHub Copilot, and others, is not permitted for graded assignments in this course unless explicitly stated otherwise (such as when you are building an AI Chatbot!). While these tools can be helpful for learning and exploring concepts, relying on them for completing assignments undermines the learning process and violates academic integrity policies.

However, at the same time, it is difficult to detect AI usage in code. Additionally, a lot of IDEs (like VSCode) already have AI tools like Copilot built into their interfaces. AI tools can be supremely helpful for learning topics and used as a "search engine" for conceptual questions. As such, we would humbly ask that you hold yourself accountable for your own AI usage when working on assignments. You will absorb less information if you simply just generate all the code for an assignment using AI, rather than working through the problems and concepts yourself!

Each homework assignment will include an AI usage declaration in the README files that will require you to document your use of AI, including any transcripts. Please don't forget to keep your AI conversations saved if you do use AI tools for help! We are also counting on you to be honest and include all your transcripts. We will likely be nicer about point deductions for excessive AI usage if you are upfront about it, rather than trying to hide it.

These policies are in place to encourage responsible use of AI, but at the end of the day, you are adults with agency over your own learning. AI tools can help you learn, but also hinder your learning if you use them as a crutch. Use them wisely, and you'll get the most out of this course!