Welcome to ITP-356! This Notion serves as a supplement to the syllabus. Anything too complicated but just as important as the syllabus will be published here. For more information, see Course Catalogue - Fall 2022.

Updated: Sep 26, 2022

Homework Grade Distribution

Homework % of overall grade
0 1
1 1
2 2
3 3
4 4
5 4
6 6
7 8
Total 29

Programming Basics

Although this course does not strictly require programming knowledge for you to get started, you will eventually learn how to program in Solidity and JavaScript. Thus, it is extremely helpful to familiarize yourself with the basic paradigms of programming. You will get a lot more out of this course if you are armed with some basic programming knowledge.

I personally recommend this course: https://www.codecademy.com/learn/introduction-to-javascript but any JavaScript or Solidity course or YouTube video will do. The point is to familiarize yourself with the basic concepts in programming, such as variables and functions.

Version Control

When it comes to writing software, the ability to collaborate and keep track of code changes is of paramount importance. In other words, version control almost always need to be established. Git is one of the most popular version control systems out there and we will utilize GitHub in this course. Make sure to set your USC email as the primary email or create an account with your USC email if you don’t have one.

Assignments will be managed using GitHub Classroom.

To learn more about how Git and GitHub work together:

https://youtu.be/HkdAHXoRtos

GitHub Student Developer Pack

Using your .edu email, you can sign up for a free Student Developer Pack that includes GitHub Pro, giving you the ability to own private repositories (among other things). Who doesn’t like free stuff?

https://education.github.com/pack

Establishing a Development Environment

For Windows users: Ubuntu Linux Virtual Machine

If you are running macOS and wish to develop natively, feel free to skip this section.

Why?

It is usually easy to manage development dependencies on macOS, Linux, and other UNIX-like operating systems. On Windows, however, managing such dependencies is a lot more difficult due to convoluted PATH and shell settings (Command Prompt vs. PowerShell vs. WSL). Thus, it may be preferable to run a virtual machine and do your work in a virtualized Linux environment.