Welcome!

« Return to the Chapter Index

Table of contents
  1. Welcome!
    1. Overview
    2. Details
    3. Audience
    4. ChatGPT and Co-Pilot
    5. About this Text
    6. Final thoughts before we begin
  2. Next Step

Overview

In this text, we will continue to study the field of computer science delving deeper into core concepts and introducing new concepts and paradigms for producing well engineered software solutions.

Specifically, we will study objects and Object-Oriented Programming techniques as well as various structures and algorithms to promote good software design.

  1. Chapter 1 will review primitive types, variables, functions, and conditional control flow (if statements).
  2. Chapter 2 will review arrays (lists) and loops (for and while loops).
  3. Chapter 3 will introduce classes and objects, and the core concepts of Object-Oriented Programming: This will let us create bundles of data to represent more complex reality.
  4. Chapter 4 will introduce methods and private fields, and the concept of encapsulation: This will let us hide complicated internal details of our classes and only expose a simple interface to users of our classes.
  5. Chapter 5 will introduce inheritance and composition: This will let us reuse code more easily and represent more complex relationships between our classes.
  6. Chapter 6 will introduce abstraction, overrides, and polymorphism: This will let us create even more flexible and reusable code.
  7. Chapter 7 will introduce exceptions and error handling: This will let us write code that can gracefully handle unexpected errors.
  8. Chapter 8 will introduce testing and anonymous functions: This will let us write code that is more robust and less likely to have bugs, and create little reusable function snippets.
  9. Chapter 9 will introduce the Webz framework and how to create web applications: This will let us create interactive applications that run in a web browser.
  10. Chapter 10 will introduce more advanced Webz concepts and techniques: This will let us create more complex and powerful web applications.
  11. Chapter 11 will introduce advanced TypeScript concepts such as generics and unions: This will give us even more ways to represent complicated data.
  12. Chapter 12 will introduce high-order methods and functional programming techniques: This will let us write more concise and powerful code for working with arrays and other data structures.
  13. Chapter 13 will introduce recursion and recursive data structures: This will let us represent and work with more complex data structures such as trees and graphs.

Details

This text uses the language TypeScript. TypeScript is a free and open-source programming language that adds static typing and type annotations to JavaScript.

TypeScript is used widely and has become the most common language for developing applications for the web.

Through this text and its associated materials you will become familiar with the TypeScript language and developing well engineered software solutions.

Audience

This textbook is designed for students taking their second coding course (“CS2”) in a computer science curriculum. It is assumed that students have already taken an introductory programming course and are familiar with basic programming concepts such as variables, loops, conditionals, functions, and basic data structures such as arrays and lists. We will move through that material very quickly in order to focus on more advanced topics like Object-Oriented Programming, Inheritance, Abstraction, Generics, Exceptions, and much more.

  • If you are looking for an introductory programming textbook, we can recommend The Python Bakery (by some of the same authors), although that will be in Python instead of TypeScript. This is a suitable text for a CS1 Python course, and it is free and open-source.

  • If you are looking for a more advanced textbook on developing web applications in TypeScript using React, we can recommend The TypeScript Tome (by some of the same authors). This is a suitable text for an introductory Software Engineering course, and it is also free and open-source.

ChatGPT and Co-Pilot

For this text, use of these tools is not recommended. These tools, while impressive, are imperfect and often generate poor, inefficient, or downright incorrect code. In order to use these tools, one must already know how to program well in order to be certain that the generated code is correct. In some cases, these tools may not be available, and thus it is important to learn to work without them.

Once you achieve mastery, you will be able to use these tools in the future. When used correctly they are powerful, but used incorrectly, they are dangerous.

About this Text

This textbook is free and open-source. It is licensed as follows:

Creative Commons Attribution Share Alike 4.0 International
Permissions: Commercial Use, Modification, Distribution, Private Use
Limitations: Liability, Trademark use, Patent use, Warranty
Conditions: License and copyright notice, State changes, Same license

More information can be found at https://creativecommons.org/licenses/by-sa/4.0/

Final thoughts before we begin

Computer science is hard until it is not. Be patient with yourself, and be persistent. You are at the beginning of the journey, and that is the hardest part. As you work through this text, try to grasp the underlying concepts.

Next Step

Let’s get your environment setup »


Back to top

Created by Greg Silber, Austin Cory Bart, James Clause.

This site uses Just the Docs, a documentation theme for Jekyll.