Draft v0.1
Software as a Second Language (working title)
Abstract
In today’s age, exponential developments in technology are presenting just as many amazing innovations as alarming concerns. It becomes the individual’s responsibility to address them, educate themselves about the science of the matter, and collaborate with others to continuously solve these problems.
This course is designed to provide a meaningful level of depth into several areas of technology including software engineering, computer security, and information theory. The prospect of “learning to code” too often describes a very narrow viewpoint for learning the fundamentals of software, when a broader, more holistic approach may be better suited for students coming from a non-technical background.
Learning Outcomes
By the end of the course, assuming enough effort is put forth by both student and teacher, you should be able to practice the following:
- Create pseudo-code for tasks or activities that may be automated
- Analyze running code to predict its behavior
- Run and edit code for a basic website by installing a pre-configured development environment
- Navigate the internet for high-quality information by understanding its structure and organization
- Trace the theoretical movement of data as it travels through various components of the internet
- Identify potential vulnerabilities of a computer system given certain conditions
- Encrypt and decrypt any message with a secret key
- Prove your signature of any message with a public-private keypair
Methodology & Evaluation
My focus in delivering this course will be to cover a variety of topics while retaining the value of hand-on engaging activities. Methods will consist of:
- Recorded lectures for each session with basic slides to follow along
- Daily in-class group work
- Interactive workshops
- Written out-of-class assigments and readings
The lectures, slides, and assigned readings are intended to be the primary source of content for the course and will serve as the core medium for me to transmit the concepts and principles necessary to complete the workshops and exercises.
Group sessions will be instrumental to promoting the core ethos of the course which features the following peer-driven learning framework for each student to gauge their level of understanding on each topic:
- A Level 1 Understanding of a particular topic will let you confidently say to yourself “I get it” and call it a day. You can now recall the material next week or next month and comfortably reaffirm to yourself that you still understand what you had learned
- A Level 2 Understanding indicates a strong enough comprehension that by articulating and explaining the topic you can successfully pass on a Level 1 Understanding of the topic to someone else
- A Level 3 Understanding represents a certain mastery of both the topic and the ways it is taught, that you can successfully pass on a Level 2 Understanding to someone else
There will be one final exam, workshops will be graded based on participation, and there will be a peer-graded evaluation.
The final exam will aim to provide a metric of the basic Level 1 understanding students were able to achieve.
The peer-graded evaluation will attempt to assess how many students were able to reach a Level 2 understanding or higher of the subject material.
Session Outline
Session 1
- Computer & Network Security Basics
- Fundamentals of Software
- Introduction to Information Theory
Session 2
- The OSI Model
- Computer Specifications
Session 3
- Passwords & Encryption
- “Blockchains” and Trusted Computing
Session 4
- Cybersecurity at a Macroscopic Level
- Vulnerability Analysis
Session 5
- Workshop 1: Hacker Wargames
Session 6
- Conditional Logic
- Boolean Algebra
Session 7
- Variable Declaration
- Objects & Key-Value Pairs
Session 8
- Sequence of Commands/Events
- Iterative Constructs
Session 9
- Programming Structure & Patterns
- Debugging
Session 10
- Workshop 2: Hands-On with Modern Web Development
Session 11
- Composition of Informative Data
- Information Structures on the Internet
Session 12
- History, Development, & Physical Limitations of Information Storage & Transfer
Session 13
- Information Sources, Trust, & Reputation
- Incentive Models for Information Sharing
Session 14
- Workshop 3: Search Tools Deep Dive
Session 15
Final Exam