
The course motivates learners to bridge gaps in computer science foundations by teaching core concepts, terminology, and practical tools, from terminals to code editors, for confidence in class and work.
James Michael Barlow presents a learning-first approach focused on mastering fundamentals, the why and how, and using concepts through practical examples to teach and guide students in computer science.
Trace the instructor's journey from chemical engineering to software and machine learning, including hand gesture detection, and learn under five hours of practical computer science foundations.
Trace history of operating systems from batch processing and time sharing to distributed and parallel computing, and see how operating system coordinates cpu, ram, and storage to run programs.
Explore RAM and memory concepts, including virtual memory, swap space, and cache, and see how the CPU, RAM, and long-term storage manage processes under an operating system.
Explore long term storage concepts, including hard disks, floppy disks, cd-roms, flash drives, solid-state drives, cloud storage, and raid, and learn how fragmentation and garbage collection affect performance.
Explain how colors encode as red, green, and blue pixels with 0 to 255 values and alpha, and how resolution, frame rate, and refresh rate shape the display.
A program is a file with text that a computer executes, either interpreted or compiled into machine code, and it can be procedural or object oriented.
Learn how programs interact by importing dependencies at the top of a file, so one program can use another’s functionality to fetch data, print to a file, and save results.
Discover how a class serves as a template for objects, with instances created by instantiating, each sharing properties and methods while holding different values, enabling iteration over records.
Develop with version control across development, test, and production environments to safely deploy updates; track changes, document fixes, and manage version numbers (major.minor.patch) to communicate scope.
The lecture distinguishes internal and external code, detailing throwaway, single-solution, multi-use, and multi-user types. It explains safety and privacy considerations for internal and external code.
Explore command-line and interactive execution, including Jupyter notebook style coding, and understand how compiled applications run as binaries on the CPU. Compare offline modeling to online, always-running processes.
Explore coding environment, system environment, and environment variables, including path resolution, import handling, linting, and runtime access to variables like user and password across programs.
Explore human-to-human communication, from verbal and nonverbal cues to writing and apps, and how emotional intelligence shapes intent. Compare these with human-computer interaction to frame foundational concepts.
Master human-computer interaction by examining terminals, webhooks, and programs, and how the internet enables precise input, metacognition of output, and automation.
Learn how computers communicate with strict, rule-based handshakes and standardized protocols. Discover how webhooks, triggers, and data formats enable reliable, streaming data between apps.
Explore how cloud computing connects your device to vast, virtualized server infrastructure using the internet. Understand how partitioned machines and data centers enable secure, shared resources.
Discover how Amazon Web Services differs from Amazon.com, and learn core tools like VPC, IAM, EC2, Lambda, S3, RDS, and Secrets Manager.
Understand how computer science teams build and coordinate multiple products through inter-team collaboration, product owners, Scrum and Kanban workflows, daily updates, and Jira tooling.
Explore formal education in computer science through certifications from entry to professional levels on platforms like OpenEDG and Oracle, plus LinkedIn assessments and Udemy classes.
Acquire programming insight through informal education: listen in on workplace conversations, ask clarifying questions, and reinforce concepts with YouTube videos and older library books.
Explore foundational computer science through essential books that guided a master's journey, from operating systems, compilers, and computer organization to Java, machine learning, and app development.
Welcome to my course on Computer Science! Let's consider two scenarios:
Scenario 1:
You started a new job in computer science (you thought you knew enough to handle it), and in that job you are required to know how to use some aspects of your computer you never knew even existed (e.g., a terminal, a webhook, a particular code editor, etc). You have to learn quickly because the project you were put on needs to be done in 1 month. *PANIC*.
Scenario 2:
You have never programmed anything before, but you decide to start a master's degree in computer science (but your bachelor's degree was in an entirely different field), and the first day the teacher asks you to write a program in C and it's due in 2 weeks. *PANIC*.
Hi, I'm James Michael Ballow, and both of these scenarios happened to me, at nearly the same time. I was nervous, and I felt anxiety and panic. The biggest problem I had was that every time I looked for a book, article, or video that would explain to me the very basics of computing, programming, or languages, nearly all of them began speaking 15 steps ahead of where I needed to start. I was always infuriated that no amount of searching could give me what I wanted. In order to get over this, I had to ask a million questions (sometimes admittedly stupid and embarrassing questions) to colleagues and professors in order to really understand things on a fundamental level.
As I went along in my academic and professional careers, I noticed something: the other students seemed to be struggling with the same thing I was, but because they did not admit their lack of fundamental understanding, their grades were often quite low. That's when it hit me: every single person is struggling with understanding this computer science stuff. This phenomena is best described by me as a "barrier" between the human and computer. This course breaks that barrier.
In this course I tell you about myself and my journey from knowing absolutely nothing about computer science, to getting a 4.0 in my Master's in Computer Science and becoming a practicing software engineer and machine learnist. I will tell you quite plainly how to think about certain concepts so that the concepts that you will learn beyond this course will be much simpler. After taking this course, you will no longer feel like there are a million things you need to learn on your own before you can start your programming, or managing/working on a programming team.
Let's do it!