About

This coursebook teaches programming in JavaScript and TypeScript, along with modern libraries and frameworks for building full-stack web applications. A full-stack developer works across the entire stack, from the user interface (the frontend) to the data and business logic (the backend). The coursebook uses React for building interactive user interfaces and Convex as a backend platform for real-time data, serverless functions, and authentication. It also introduces AI-assisted coding techniques.

This coursebook supplements Full-Stack JavaScript (EN.601.280), a course I teach at Johns Hopkins University. It also stands on its own for anyone learning full-stack JavaScript development outside the course.

Who This Is For

You should have modest exposure to a programming language such as Java or C++, including the basics of structured programming and object-oriented programming. This coursebook does not assume prior experience with JavaScript, TypeScript, React, or Convex.

Learning Outcomes

By the end of this coursebook, you will be able to:

  • Program in JavaScript and TypeScript, applying programming fundamentals and object-oriented concepts using modern syntax.
  • Use advanced JavaScript techniques, including functional and asynchronous programming patterns.
  • Design and build full-stack web applications using React and Convex.
  • Build responsive and interactive frontend applications with React, including client-side routing and state management.
  • Develop backend services with Convex, including serverless functions, real-time data synchronization, and authentication.
  • Apply modern software development practices, including version control and standard development workflows.
  • Use AI-assisted coding tools to support code generation, debugging, and development.

How This Coursebook Is Organized

The coursebook has two parts.

The first part, the Language Guides, covers JavaScript and TypeScript in depth: structured, functional, object-oriented, and asynchronous programming, the DOM, modules, and the broader ecosystem of tools around the language. Use these as a reference, or work through them alongside the projects.

The second part, the Projects, is where most of the learning happens. Each project builds a complete, small application, starting with plain HTML, CSS, and JavaScript and progressing toward full-stack applications built with React and Convex. Every project ends with practice questions.

A set of Archived Projects is also planned, covering earlier versions of the course that used different tools, such as Express.js, Nest.js, MongoDB, and Postgres.

What You Need

To work through this coursebook, you will need the following tools installed: