Electronics and Computer Engineering (ECE)

Curriculum Overview

Important: this document is a work in progress. Date of last update: 17 July 2021

Young EngineerThe Electronics and Computer Engineering (ECE) courses introduce young students to the fields of electronics and computer science. These hands-on, project based STEAM courses not only teach students about the various technologies, but just as importantly, unlock the creative spirit in every student. The courses are designed to be fun and encourage students to engage in “what if” types of questions. Independent exploration and team collaboration is actively encouraged.

This curriculum is designed for students as young as 4 years old through university and post-graduate study. Most of the courses are designed at a pre-University level to match the math level of the students.  Students of all ages can benefit from these courses in many ways:

  • STEAM driven curriculums contribute to better understanding about how different areas relate to each other and to our daily lives. Students understand these subjects better and it helps them to see the “big picture” how other subjects relate and depend on each other.
  • The courses place a high value on creativity and collaboration – skills very much in need in most industries.
  • Basic skills taught are critical for students who wish to purse both degree and non-degree related careers.
  • Basic IT and design skills are becoming more and more in demand across industries and even with traditional office environments. Students with these skills have a natural advantage in the workplace.

Blue PCB AbstractThese courses are not intended to be replacements for college level instruction. Many technologies need advanced mathematics for a complete understanding of how and why things work the way they do. We leave this for the universities and degree linked curriculums to cover. Our focus is on providing a solid foundation where students can learn basic ECE skils, preparing them for university courses later should they desire. We hope to light the spark inside students to encourage them to pursue additional courses in science and other design disciplines. Critical thinking skill development is an essential part of all ECE courses.

Students not pursuing university degrees in related fields will have developed real world skills that can be used for non-degree employment opportunities.

Course Hierarchy

The initial course hierarchy consists of 13 initial courses across 3 main focus tracks:

  • Electronics: basic concepts for the beginner through modern IoT systems. This includes micro-controller and single board computer based design.
  • Computer Science: modern programming languages from ScratchJr for the very young learners through object oriented high level languages such as Python and JavaScript for the more advanced students.
  • Web Development: introduction and application of HTML/CSS for modern web design for students and adults wishing to get involved in this area. Advanced server based topics covered for students who also have the programming (computer science) course prerequisites in later courses.

Note: as of July 2021, the first few courses are complete and are ready for local instruction. The remaining are expected to be phased in through the end of 2021 and early 2022. Online roll-out of many of these courses is planned for early to mid-2022.

Electronics Track

Electronics 1 teaches basic electrical and math concepts to students with no previous background in the subject. This is extended in later courses to include digital logic design followed by embedded system and IoT design concepts.  PCB Theory and Design is being considered as an additional course that can be taken at any time once the student has reached the Electronics 2 level.  The courses include:

Electronics 1: Introduction to Electronics and ComputersElectronics 1

Basic electricity, common electronic components, and elementary circuit analysis are covered in this introductory course.  This is followed by simple number theory and an introduction to computing (hardware and software systems).  No previous knowledge or experience in electronics is required for this course however elementary algebra skills are needed.
Status: Course Design 50% complete.

Electronics 2: Digital Logic DesignElectronics 2

Digital electronics are at the heart of almost everything we use today. This course introduces basic digital theory and design (logic gates). Numbering systems, boolean algebra, boolean functions and conventions and reductions are covered followed by sequential circuit design. Theory work is paired with real digital circuit design and projects using discrete TTL logic.
Prerequisite: Electronics 1
Status: Course design in progress

Electronics 3: Embedded Systems and IoTElectronics 3

This course introduces micro-controllers, or small programmable computers, into circuit design. We use the Arduino Uno controller for our classes due to it’s ease of use, low cost and availability. Concepts learned in this course can be applied to most other common controllers available today. The specific layout of the course is still under development. It will include micro-controller basics, A/D and D/A converters, programming environments (Arduino), library usage and how to connect student designed logic and analogue circuits and an introduction to computer architecture.
Prerequisite: Electronics 2
Status: Course design in progress

Notes:

  • this course requires Programming 2 as a prerequisite
  • the amount of material covered in this course may require breaking it into two separate courses
  • if broken into 2 courses coverage of ESP32 and similar controllers would be desirable.

PCB Theory and Design: KiCadPCB Design

This course is still on the drawing board. The intention is to teach the basics of good printed circuit board design using KiCad. This is followed by practical issues involved with debugging and submitting designs to PCB factories.
Status: Under consideration

Computer Science Track

Computer Science TrackComputer Science courses start with young learners with no experience with computers or programming up through early University level material. Programming for Young Learners: ScratchJr begins with an introduction to electronic devices and guidelines for their proper use (when, where and how). All classes include hands-on project based learning with creativity and collaboration encouraged.

Teachers Network looks at programming languages as tools needed to get particular jobs done. Like the tools in a workshop, no one tool is perfect for every problem. The same applies to languages and problem solving approaches. We are here to understand the tools available and choose what works best for a given problem. We are not advocates for any particular language.

Students are introduced to new concepts to build a solid foundation for their further work in the field. This starts with the simple block languages ScratchJr and Scratch 3. Structured programming is then introduced with the C language and Linux. This is followed up with object oriented languages such as C++ and Python.

Many courses and workshops try to introduce students to computer science with object oriented programming concepts without first teaching the basics of computer science. We believe this is a mistake and is not in the best interest of the serious student. It’s like taking a 6-week foreign language crash course for travelers. When tourists arrive they may be able to understand a few things and communicate in simple ways. They will not have the language skills to fit into society or to do any meaningful work. This goes for teaching machine languages such as Python and JavaScript at the earliest levels. It creates frustrations in the learning process (incomplete knowledge) and potentially does more harm than good in the long run. It does sell more robot kits for the kids though.

Computer Science TrackThe focus of this series is with computer languages, operating systems basics, and simple applications. It does not go into depth with topics such as algorithms (sorting and search for instance), database theory and applications, numerical methods, UI/UX, operating systems, mobile device application development or similar topics. Some of these are being considered for future courses to add to the series. Inclusion of the Java programming language and some of the newer JavaScript frameworks are high on our list for future inclusion. For now we are focusing on building a solid foundation on which the other topics can be built upon later.

Students finishing the ECE Computer Science courses will have a solid understanding of computer science fundamentals. They will understand differences between programming languages, how to choose a language or languages, and how to best to apply these to a given set of problems.

Programming for Young Learners: ScratchJr (age 4 – 8)ScratchJr Logo

The course starts by teaching proper device usage and discipline. Device usage is a part of our daily lives now regardless of profession. We believe the time to teach proper discipline and avoid problems such device addiction and improper use is at a young age. Students learn basic sequencing (ordering of actions), and simple animation through programming blocks and art design principles. They should fee comfortable asking ‘what if’ questions and be able to design, debug and show basic ScratchJr programs.
Prerequisites: The ability to communicate in English using simple words
Status: Course design is complete.

Programming 1: Scratch 3 (age 7+)Scratch 3 Example

Early computing and critical thinking concepts are introduced using Scratch 3 for students aged 7+. The course focuses on the creative process fostering a mindset that always asks “what if” questions.  Students are actively encouraged to come up with their own ideas and make them come to life through the class animation exercises.  Most critical programming constructs used in modern programming languages are introduced include coding, algorithms, and art design concepts to build fun and engaging animations.
Prerequisites: Programming for Young Learners is desirable but not required for students 7+
Status: Course design is complete.

Programming 2: Introduction to Programming, Linux and C

This first course in structured programming is broken down into two sections: Linux and an introduction to C language programming.  Students should have basic knowledge and background in at least one block programming language. An introduction to programming, the history of programming languages and an overview of how and why different languages exist is presented. The rest of the course is broken down into two main areas: Linux and C programming.  At the end of this course students will have a working knowledge of how to use Linux and be able to design, code and test simple programs in the C language.

Note: the material presented in this course is most likely too much for a single course and will likely be broken into two separate courses.  Linux and C programming will remain covered together, but in two stages.

Prerequisites: Basic knowledge and background in at least one block programming language (Scratch or similar).
Status: Course design 80% complete.

Programming 3: C++ and PythonPython Logo

Object oriented programming (OOP) concepts using the C++ and the Python programming languages are introduced. OOP is a programming model that organizes software design around data, or objects, instead of functions. Topics covered include objects and classes, constructors/destructors, methods, data modeling, encapsulation, inheritance and polymorphism.
Prerequisites: Programming 2
Status: Course design in progress

Computer Networks: Internet Design, TCP/IP and ServicesComputer Networks

This course covers the basics of computer networking. The 7-layer model together with layering abstractions and API’s. The basic operation of the TCP/IP set of protocols is covered followed by an introduction to the more common application layer protocols (SMTP, HTTP, DNS, DHCP, SSH, etc).
Prerequisites: Programming 2
Status:
Course design in progress

Web Development Track

Browser CollageThe Web Development courses are for students wanting to learn how to create, enhance and maintain web sites.  The first course Web Design 1 introduces basic web technology to students with no prior experience in design.  This is followed up by Web Design 2 where Content Management Systems are covered with an emphasis on WordPress.  Students learn to create basic but good looking and modern websites.

Web Design 3 and Web Design 4 cover client/server technologies and require Programming 2 or Programming 3 as a prerequisite.  These web frameworks give the designer many more tools for making more interactive pages and advanced user interfaces.

The courses include:

Web Design 1: HTML, CSS and Responsive DesignWeb Design 1

This first course in web design introduces the Internet, the world wide web and the basic client-server model (servers and browsers). HTML is introduced through a study of the markup language, URLs and URIs followed by simple HTML page design (browser based). A brief introduction to the Document Object Model (DOM) is given. This is followed by the separation of presentation and content through the use of Cascading Style Sheets (CSS).  This concept is extended with Responsive Design where students learn how to build content that will render well across a wide range of devices (cellphones through HD desktop displays).
Prerequisites: None
Status: Course design in progress

Web Design 2: WordPressWordPress

Content Management Systems, or CMS, are software applications that run on an Internet server allowing users to build and manage websites without having to code from scratch, or know how to code at all.  This course focuses on CMS’s and WordPress in particular. WordPress is the most popular and widely used CMS on the Internet. HTML, CSS, the client/server model are reviewed followed by a brief introduction to other common CMS solutions (Drupal, Joomla, etc). WordPress fundamentals covered include themes, plugins, permissions, users, etc. Students will be able to create and maintain a basic but good looking WordPress site.
Prerequisites: Web Design 1
Status: Course design in progress

Web Design 3: PHP, JavaScript and jQueryJavaScript

This course covers advance web design involving client/server programming and coordination. The client/server model and DOM is introduced.  Database systems (software which store and retrieve structured information on the server) and the Structured Query Language (SQL) use, configuration and programming is presented.  An introduction to the PHP and JavaScript languages is given followed by the jQuery JavaScript framework.  This course is roughly half web design and half software engineering.
Prerequisites: Programming 2Web Design 2
Status: Course design in progress

Web Design 4: Java, Advanced JavaScript FrameworksJava Logo

This is a course we are considering but have not yet had the time to devote to a proper study. The Java programming language would be a good addition as many other curriculums, including the AP Compupter Science courses use this. Many advanced JavaScript frameworks such as Node.JS and React are also seeing increased usage and are likely to become more important over time.  Please note that Java and JavaScript are completely different languages but both are widely used on the Internet for different purposes.
Prerequisites: Programming 3Web Design 3
Status: Under consideration

Course Hardware Requirements

Hardware RequirementsTeachers Network ECE courses are all active hands on project driven classes. They require students have access to tools and sometimes equipment or parts to do the home computing or laboratory work. We try to minimze the need for students to purchase gear whenever possible. The Scratch courses for example can run on equipment that many students already have. The Web Development courses only need a computer with a modern browser. The server side resources are provided by the Teachers Network datacenter systems. Other classes however require some combination of computer and/or electronics parts to complete.

Teachers Network is working on being able to provide low-cost self-contained kits for all applicable courses. More information on these can be found in the individual course description pages and on the  Teachers Network Course Kits page. Much of the work identifying what is needed and putting it all together is still a work in progress at the time of this writing (July 2021). Updates will be posted to the applicable course description pages as well as the Teachers Network Course Kits page as they become available.

References

STEM – Description and Relevance – https://teachers-network.com/stem/