Resources

Introduction

Computer Science is an incredibly broad field, and it is often tough for beginners who are interested in the subject to get their feet wet in the subject because of its complex nature, learning curve, and copious career sub-paths. This section seeks to provide beginners more accessible resources to get them interested, engaged, and off the ground with CS!

Compiled by Richard and Wilson Zhang!

Programming Fundamentals

An all too common question in the realm of beginner computer scientists is what programming language to learn first. Despite fierce debates over the answer, and language loyalists muddying the waters for the uninitiated, this is far from as serious a decision as many make it out to be. As long as you begin with a reasonably popular and well-structured language, you will be absolutely fine. With that said, however, we do recommend that beginners start with Java due to its highly structured nature, which guides beginners to a better understanding of both the mechanics of a programming language and the bigger-picture concepts in CS.

Java Programming for Beginners - Full Course (freeCodeCamp.org) — Despite being on the longer side, this is easily one of the most thorough Java courses out there, and will rocket you from no knowledge whatsoever to Java competency in only 4 hours total.
W3Schools Java Course — The W3Schools Java course is a little more interactive and teaches Java through a self-paced website.
Online Java Compiler — If you don't have the ability to download and run a Java development environment on your computer for any reason, this online Java compiler will let you run your programs effortlessly from the browser!
Java CodingBat — CodingBat's Java page is full of excellent programming exercises, ranging from very easy to more advanced. It's an excellent resource to use alongside the previously listed courses!

The Command-Line

Every computer scientist should be familiar with the command-line interface present on their computer.

A command-line interface, or CLI, allows you to interact with your computer's operating system through a text-based interface, abstracting away some complexities of the operating system itself. Due to this encapsulation, the most used term to describe such programs is a "shell". Understanding the shell you use will empower you to save time bypassing clunky graphical interfaces, perform full-featured scripting, and much more!

Below are beginners' guides for Windows, MacOS, and Linux shells. Although Linux/BSD shells vary based on flavor/distribution, and MacOS ships with zsh as its default shell, the guide by Ubuntu will almost always apply regardless.

Windows Command Prompt
Linux/BSD/MacOS Terminal

Website Development

Free Code Camp — Various Rooms and Projects to try out for hands on learning.
HTML & CSS — W3Schools' HTML tutorial!

Cybersecurity

TryHackMe — TryHackMe is one of the best websites to learn cybersecurity. It covers everything from rudimentary basics all the way to expert-level techniques, teaching topics such as the Linux filesystem, the bash shell, computer networking, and much more cybersecurity-relevant tools and knowledge. It includes concentrated “tracks” for more in-depth matters such as ethical hacking, networking, and operating systems, which will require more advanced prior knowledge.

Game Development

Unity is a free and robust game engine that is great for creating both 2D and 3D games. Unity uses C# for scripting, so knowledge of C# will be helpful, but it's not necessarily needed if you wish to learn game development with Unity. Here is an incredibly in depth and thorough guide to learn C#!

Presentations

List of presentations created by stogacs alumni that you should totally check out: