Learning Program: Difference between revisions
| Line 33: | Line 33: | ||
== Foundations of Computing == |
== Foundations of Computing == |
||
[[File:slideshowscreenshot.png|thumb|A screenshot of one of the |
[[File:slideshowscreenshot.png|thumb|A screenshot of one of the slides.]] |
||
The [[#nand2tetris|NAND2Tetris]] program requires some prerequisite knowledge - a foundation in certain computing concepts that is needed before you can proceed. These lessons are intended to provide that necessary foundation. New interns will go through a series of lessons to help better understand essential computer engineering concepts. |
The [[#nand2tetris|NAND2Tetris]] program requires some prerequisite knowledge - a foundation in certain computing concepts that is needed before you can proceed. These lessons are intended to provide that necessary foundation. New interns will go through a series of lessons to help better understand essential computer engineering concepts. |
||
The lessons cover: |
The lessons cover: |
||
* The origins of computing, what a "computer" is, the evolution of |
* The origins of computing, what a "computer" is, the evolution of computer devices over time |
||
* The mathematics (both arithmetical and logical math) behind computing functionality. |
* The mathematics (both arithmetical and logical math) behind computing functionality. |
||
* The fundamental building blocks of mechanical and digital electronic computers. |
* The fundamental building blocks of mechanical and digital electronic computers. |
||
* Basic electrical circuits, semiconductor physics, diodes, transistors and logic gate operation. |
* Basic electrical circuits, semiconductor physics, diodes, transistors and logic gate operation. |
||
'''Note:''' The mathematical concepts in this |
'''Note:''' The mathematical concepts in this learning program can range from basic to very complex. Experience has shown that these concepts are not beyond the comprehension of a high school Freshman but it is important that all interns have a strong understanding of math and an enjoyment of the subject. |
||
== NAND2Tetris == |
== NAND2Tetris == |
||
Revision as of 20:04, 4 September 2025

The main objective of the internship is to learn. When you first start, you will be part of the initial learning program. The learning program is formatted like a school classroom consisting of learning lectures, labs, and projects. The vast majority of learning activities will involve hands-on projects so all students are provided a computer that they can program on. Most intern groups opt for quizzes and optional homework assignments to help reinforce the learned topics to keep on track.
Objectives
First year
Beyond the first year
Introductory Lessons

Each new intern must attend the orientation sessions. Depending on the capabilities of the new students, this will take only one or two sessions. As students will be accessing the command line interface (CLI) of Unix-based OSes as opposed to exclusively the graphical user interface (GUI), it is critical that the students gain adequate familiarity with these systems.
- Interns will be guided through the Code of Conduct, Safety Guidelines, schedule, expectations and will be assigned a laptop for working through the lessons.
- Interns are introduced to Unix-based computer operating systems. Where files are stored, how to navigate in the CLI, how to execute and use common Unix commands, and how to interface between the GUI and the CLI.
New interns are also given a screening of "The Mystery Video".
This video is crucial for understanding computer-related things like magic and tubes.
If you do not watch this video, you will not achieve enlightenment.
Ensure that you learn the shocking truth before proceeding too deeply into your internship!!
Foundations of Computing

The NAND2Tetris program requires some prerequisite knowledge - a foundation in certain computing concepts that is needed before you can proceed. These lessons are intended to provide that necessary foundation. New interns will go through a series of lessons to help better understand essential computer engineering concepts.
The lessons cover:
- The origins of computing, what a "computer" is, the evolution of computer devices over time
- The mathematics (both arithmetical and logical math) behind computing functionality.
- The fundamental building blocks of mechanical and digital electronic computers.
- Basic electrical circuits, semiconductor physics, diodes, transistors and logic gate operation.
Note: The mathematical concepts in this learning program can range from basic to very complex. Experience has shown that these concepts are not beyond the comprehension of a high school Freshman but it is important that all interns have a strong understanding of math and an enjoyment of the subject.
NAND2Tetris


The NAND2Tetris course aims to teach the essentials of computer design and operation through a ground-up approach. This is done by having the students build a virtual computer from scratch. The computer design is simple but sufficiently powerful to demonstrate key concepts of computing including hardware and software.
Throughout this course, you will learn about logic gates, boolean algebra, assembly language, high-level programming languages, operating systems, and more.
We start from the NAND logic gate (which is covered in great depth during the introductory learning sessions) and build up towards a functioning, Turing-complete computer which you can program. The name of this program comes from one possible culminating project for students which is to program Tetris to run on this computer.
"The book exposes students to a significant body of computer science knowledge, gained through a series of hardware and software construction tasks. These tasks demonstrate how theoretical and applied techniques taught in other computer science courses are used in practice. In particular, the following topics are illustrated in a hands-on fashion..."
| Hardware | Logic gates, Boolean arithmetic, multiplexors, flip-flops, registers, RAM units, counters, Hardware Description Language (HDL), chip simulation and testing. |
|---|---|
| Architecture | ALU/CPU design and implementation, machine code, assembly language programming, addressing modes, memory-mapped input/output (I/O). |
| Operating systems | Memory management, math library, basic I/O drivers, screen management, file I/O, high-level language support. |
| Programming languages | Object-based design and programming, abstract data types, scoping rules, syntax and semantics, references. |
| Compilers | Lexical analysis, top-down parsing, symbol tables, virtual stack-based machine, code generation, implementation of arrays and objects. |
| Data structures and algorithms | Stacks, hash tables, lists, recursion, arithmetic algorithms, geometric algorithms, running time considerations. |
| Software engineering | Modular design, the interface/implementation paradigm, API design and documentation, proactive test planning, programming at the large, quality assurance. |
The learning paradigm is based on an abstraction-implementation. Students will be presented with concepts and be asked to build something in a virtualized environment. Using what they built, the can build something more complex abstracting away the details of the subordinate components. Though everything is presented virtually, the concepts are concrete. A true physical computer could be built with these parts.
Note: Be aware that the material presented is intended for students of computer science and other engineering disciplines in colleges and universities, at both the undergraduate (typically college Sophomore level or higher) and graduate levels. Prospective interns need to be very conscious of this and take into account the significant amount of time and work this will involve. Students with limited time should avoid compounding their situations.
Introduction to Electronics

Concurrent to the NAND2Tetris learning, first year interns will gain an understanding of digital electronics through a series of laboratory exercises. They will learn about electronic circuits, logic gates, and timers over the course of a number of digital electronic laboratories (click here for more details). Students will learn how to read and write schematics to document their progress. This introduction to digital electronics is useful for prospective computer and electrical engineers. Students will learn about electrical components and concepts such as...
- Ohm's Law
- Batteries and power supplies
- Resistors, capacitors, lamps, and relays
- Semiconductor elements such as diodes, transistors and LEDs
- Counters and oscillators/timers
The learning program will take you through the process of building a small toy. An electronic device that will simulate the randomized roll of a die.
Introductory Digital Electronics Lab Exercises
After Initial Learning
All interns are required to work on learning projects to enhance their knowledge and skills. After the first year, interns will choose a pathway to specialize in. Pathways are computer science, information technology, and mechatronics engineering. You can then choose from a variety of pre-designed projects available to walk through and learn from or you can design a new project.
Through the IT department, interns have access to various tools and components to work on a wide range of projects or students can bring in their own equipment to supplement.
Computer Science Projects

Students will learn advanced programming techniques and algorithms to solve complex problems. (Note: it is highly recommended that students interested in computer science sign up for the Running Start program in 11th and 12th grade to take college level classes in computer programming and mathematics classes in linear algebra and/or probability and statistics)
- Programming Computer Graphics - In this program, students will learn how computer graphics work by building a graphics engine for developing games. Students initially learn about the interconnections between HTML rendering on web-pages and the WebGL graphics engine. The students are walked through a series of chapters building on a project to rendering objects, textures, sprites, double buffering, illumination, particle systems, collision detection and parallax. Students will use the concepts learned to build their own graphics programs and games.
- Programming Artificial Intelligence - Students will learn about and use the various algorithms that simulate human reasoning. You will learn how to build AIs using the Python programming language that play games to understanding how deep learning, large language models and neural networks work.
- Web server build - Students build an Apache web server and learn how to develop web applications and understand backend systems such as SQL databases, manage information flows and use frameworks.
Digital Electronics Projects


- Clock Project - This is a next step project from the initial learning dice project. Using logic ICs, oscillators and seven-segment displays, the students will design and construct a digital clock.
- Microcontroller projects - Learn how to use microcontrollers and FPGAs to build hardware to accomplish varying tasks. We learn how to do complex tasks using Arduino, Teensy, ESP32 microcontrollers, Rasberry Pi SOCs, Xilinix and iCE40 FPGA development boards.
- Calculator Project - Students will build the subsystems that make up a computer by wiring chips and logic gates together. This series of projects uses breadboards, microprocessors, FPGAs, SRAM and EEPROMs for the physical build and assembly language to control it. This is a major culminating project usually done by seniors. Student teams are formed to build the hardware and program the software to make a functional calculator.
Information Technology Projects
- Computer system administration - Using real and virtualized servers, students can build interconnected systems in a flat as well as hierarchical networked environment to understand system administration concepts.
- Networking projects - Students build a physical network to learn about network communication processes and standards. Advanced projects have students learn how DNS, DHCP, VLANs and other technologies work within a network infrastructure. At District Network Schema, you can see and overview of the school district network connectivity map.
- Cybersecurity - Students will learn about key concepts in the field of cybersecurity. Using a learning program used by IT engineers, students can prepare for the CompTIA Security+ certification.
Mechatronics Projects
Engineering students will be introduced to engineering through mechatronics. As the field is a combination of electrical engineering, mechanical engineering, computer science and information technology, the engineering track will provide the most exposure to a wide range of topics. (Note: it is highly recommended that students interested in engineering sign up for the Running Start program in 11th and 12th grade to sign up for college level physics and calculus)
- Electrical Engineering - students will engage in circuit analysis using Ohm's Law, Norton/Thevenin equivalents, and wye-delta transformations while gaining a foundational understanding of resistors, capacitors, and inductive elements.
- Computer Science - with a basic understanding of EE, students will program microcontrollers to understand the role of actuators in mechatronics engineering. Students will learn how to program in Python and C programming languages to handle input/output and communication between components.
- Robotic Projects - after learning about electronics, microcontrollers, motors and sensors, students will use and build various robotic mechanisms including rovers and robotic arms to build autonomous and controlled systems. Students will learn to use CAD software to design the 3D prints to build components.
Choose Your Own Adventure
After the first year, interns have the option to engage in a more free-form learning process, based on the interests of the group. Interns have chosen to pursue networking, cybersecurity, and programming curricula.
Interns can propose a custom project that better fits with their interests. These projects would be vetted by a coordinator and evaluated for how well they pertain to identified learning objectives. Students must fully document their progress so that it can become part of the portfolio of project ideas for other interns.
Examples of custom projects include...
- Website - students can setup servers and create websites to learn about the underlying technologies that run them. The website that you are on right now was built by students as an information repository for interns. Their work was interrupted due to the pandemic so there is a lot of room for continuing the development and growth of the site.
- Network infrastructure design - students can build small network with switches, routers, firewalls and servers to learn the fundamentals of network administration.
- Cybersecurity lab - students can setup servers to practice cybersecurity techniques to implement red/black/grey hat teams to test breach and detection methodologies.
After the first year, students aged 17+ will be eligible to participate in field work.