ECE: Computer Science Track Overview

Computer Science courses start with young learners with no experience with computers or programming up through early University level material. Our first course for young learners begins with an introduction to electronic devices and guidelines for their proper use (when, where and how). All classes are 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.

Note: 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 crash course on French for travelers. When they arrive in Paris they will be able to understand a few things and be able to communicate in simple but limited ways. They will not have the skills to fit into society or to do any meaningful work in French. The goes for teaching 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 for the serious student. It does sell more robot kits for the kids though.

Students finishing the ECE programming series should have a solid understanding of computer science fundamentals. They should understand differences between programming languages and know how to choose a language or languages to best to apply to a given set of problems.

Note: The focus of this series is with languages, programming and operating environments, 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.

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

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 principals. They should fee comfortable asking ‘what if’ questions and be able to design, debug and show basic ScratchJr programs.
Status: Course design is complete.

Programming 1: Scratch 3 (age 7+)

Core computing and critical thinking concepts are introduced using Scratch 3. The course integrates coding, algorithms, and art design concepts to build fun and engaging visual solutions.
Status: Course design is complete.

Programming 2: Introduction to Programming, Linux and C

This is a first course in structured programming. It is broken down into two sections: Linux and an introduction to C language programming. Students learn how and why we use programming languages. They will have a working knowledge of how to use Linux and be able to design, code and test simple programs in the C language.
Status: Course design 80% complete.

Programming 3: C++ and Python

Object oriented programming (OOP) concepts using the C++ and the Python programming languages are introduced. OOP is a computer 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.
Status: Course design in progress

Computer Networks: Internet Design, TCP/IP and Services

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 of the more common application layer protocols (SMTP, HTTP, DNS, DHCP, SSH, etc).
Status: Course design in progress
Prerequisite: Programming 2