Professional Documents
Culture Documents
Cse Curriculum 1
Cse Curriculum 1
Cse Curriculum 1
and Engineering
A comprehensive list of the courses I have covered across top universities that map to a
degree-equivalent in Computer Science and Engineering.
Nathan Moses
MOS Transistors
Columbia University 11 weeks
Description:
Learn how MOS transistors work, and how to model them. The understanding provided in this
course is essential not only for device modelers, but also for designers of high-performance
circuits.
Syllabus:
- About This Course and Overview of the MOS Transistor
Welcome to the “MOS Transistors” course! We are very excited to be able to offer this course, and
are looking forward to working with you.
- Small-Dimension Effects 1
In this module we are dealing with phenomena that occur when the transistor dimensions are
made small; this is important knowledge to have when one is dealing with modern devices.
2
- Large-Signal Dynamic Operation
In this module there is a significant departure from what we have done up to this point: we will
allow the terminal voltages of the transistor to vary with time. We will determine the resulting
terminal currents, which will now include a “charging” component. We will do this both for
moderate and for very high “speeds”. The transient response of circuits involves similar
calculations, only done by computer for an ensemble of transistors and other devices.
- Small-Signal Modeling I
The material for this module deals with small-signal modeling and constitutes an important
part of the description of MOS transistor behavior. It relates small changes in terminal voltages
to the resulting small changes in currents. Small-signal modeling is key to analog circuit design,
but not only; it is also used in high-performance digital circuit design (e.g., in designing memory
sense amplifiers).
- Small-Signal Modeling II
This material concludes our discussion of small-signal modeling; it shows how we can model the
transistor at frequencies at which the simple model we derived last week is not valid. Such
modeling is important in high-frequency applications, e.g. transceiver design.
3
Linear Circuits 1: DC Analysis
Description:
This course explains how to analyze circuits that have direct current (DC) current or voltage
sources. A DC source is one that is constant. Circuits with resistors, capacitors, and inductors
are covered, both analytically and experimentally. Some practical applications in sensors are
demonstrated.
Syllabus:
- Module 1: Introduction
This module reviews background material from physics on the basic properties of
electricity and electrical circuits.
- Module 2
The module describes some basic principles used in circuit analysis.
- Module 3
This module demonstrates physical resistive circuits and introduces several systematic
ways to solve circuit problems.
- Module 4
This module introduces additional methods for analyzing circuit problems and how
resistors are used in sensors.
- Module 5
This module introduces capacitors and inductors, which are called "reactive" circuit
elements.
- Module 6
This module introduces the transient response behavior of RC and RL circuits after a
switch in a circuit is changed.
- Module 7
This module demonstrates useful applications of capacitors and inductors in real
engineering systems and introduces the behavior of second-order reactive circuits.
4
Linear Circuits 2: AC Analysis
Georgia Institute of Technology 5 weeks
Description:
This course explains how to analyze circuits that have alternating current (AC) voltage or current
sources. Circuits with resistors, capacitors, and inductors are covered, both analytically and
experimentally. Some practical applications in sensors are demonstrated.
Syllabus:
- Module 1: AC Circuit Analysis
- Module 2: Frequency Response
- Module 3: Filters
- Module 4: Power
- Module 5: Transformers
5
CS50's Introduction to Computer
Science
Harvard University 12 weeks
Description:
An entry-level course taught by David J. Malan, CS50x teaches students how to think
algorithmically and solve problems efficiently. Topics include abstraction, algorithms, data
structures, encapsulation, resource management, security, software engineering, and web
development. Languages include C, Python, SQL, and JavaScript plus CSS and HTML. Problem
sets inspired by real-world domains of biology, cryptography, finance, forensics, and gaming. The
on-campus version of CS50x , CS50, is Harvard's largest course. You’ll learn:
You’ll learn:
- Week 0: Scratch
Computer Science. Computational Thinking. Problem Solving: Inputs, Outputs.
Representation: Unary, Binary, Decimal, ASCII, Unicode, RGB. Abstraction. Algorithms.
Running Times. Pseudocode. Scratch: Functions, Arguments, Return Values; Variables;
Boolean Expressions, Conditionals; Loops; Events; Threads.
- Week 1: C
C. Source Code. Machine Code. Compiler. Correctness, Design, Style. Visual Studio Code.
Syntax Highlighting. Escape Sequences. Header Files. Libraries. Manual Pages. Types.
Conditionals. Variables. Loops. Linux. Graphical User Interface (GUI). Command-Line
Interface (CLI). Constants. Comments. Pseudocode. Operators. Integer Overflow.
Floating-Point Imprecision.
- Week 2: Arrays
6
Preprocessing. Compiling. Assembling. Linking. Debugging. Arrays. Strings.
Command-Line Arguments. Cryptography.
- Week 3: Algorithms
Searching: Linear Search, Binary Search. Sorting: Bubble Sort, Selection Sort, Merge Sort.
Asymptotic Notation: O,Ω,θ. Recursion.
- Week 4: Memory
Pointers. Segmentation Faults. Dynamic Memory Allocation. Stack. Heap. Buffer Overflow.
File I/O. Images.
- Week 6: Python
Python: Functions, Arguments, Return Values; Variables; Boolean Expressions, Conditionals;
Loops. Modules, Packages.
- Week 7: SQL
SQL: Tables; Types; Statements; Constraints; Indexes; Keywords, Functions; Transactions.
Race Conditionals. SQL Injection Attacks.
- Week 9: Flask
Flask. Route. Decorators. Requests, Responses. Sessions. Cookies.
7
CS50's Introduction to Game
Development
Harvard University 12 weeks
Description:
In a quest to understand how video games themselves are implemented, you'll explore the
design of such childhood games via lectures and hands-on projects, the course explores
principles of 2D and 3D graphics, animation, sound, and collision detection using frameworks
like Unity and LÖVE 2D, as well as languages like Lua and C#. By class’s end, you'll have
programmed several of your own games and gained a thorough understanding of the basics of
game design and development.
Syllabus:
- Super Mario Bros.
- Pong
- Flappy Bird
- Breakout
- Match 3
- Legend of Zelda
- Angry Birds
- Pokémon
- 3D Helicopter Game
- Dreadhalls
- Portal
8
CS50's Mobile App Development
with React Native
Harvard University 12 weeks
Description:
Learn about mobile app development with React Native, a popular framework maintained by
Facebook that enables cross-platform native apps using JavaScript without Java or Swift.
Syllabus:
This course picks up where CS50 leaves off, transitioning from web development to mobile app
development with React Native. The course introduces you to modern JavaScript (including ES6
and ES7) as well as to JSX, a JavaScript extension. Through hands-on projects, you'll gain
experience with React and its paradigms, app architecture, and user interfaces. The course
culminates in a final project for which you'll implement an app entirely of your own design. You’ll
learn:
- JavaScript
- ES6
- React, JSX
- Components, Props, State, Style
- Components, Views, User Input
- Debugging
- Data
- Navigation
- Expo Components
- Redux
- Performance
- Shipping, Testing
9
CS50’s Web Programming with
Python and JavaScript
Harvard University 12 weeks
Description:
This course picks up where CS50 leaves off, diving more deeply into the design and
implementation of web apps with Python, JavaScript, and SQL using frameworks like Django,
React, and Bootstrap.
Topics include database design, scalability, security, and user experience. Through hands-on
projects, you'll learn to write and use APIs, create interactive UIs, and leverage cloud services like
GitHub and Heroku. By course's end, you'll emerge with knowledge and experience in principles,
languages, and tools that empower you to design and deploy applications on the Internet.
You’ll learn:
You’ll learn:
- HTML, CSS
- Git
- Python
- Django
- SQL, Models, and Migrations
- JavaScript
- User Interfaces
- Testing, CI/CD
- Scalability and Security
10
CS50's Understanding Technology
Harvard University 12 weeks
Description:
This is CS50’s introduction to technology for students who don’t (yet!) consider themselves
computer persons.
This is CS50's introduction to technology for students who don’t (yet) consider themselves
computer persons. Designed for those who work with technology every day but don’t
necessarily understand how it all works underneath the hood or how to solve problems when
something goes wrong, this course fills in the gaps, empowering you to use and troubleshoot
technology more effectively. Through lectures on hardware, the Internet, multimedia, security,
programming, and web development, this course equips you for today’s technology and
prepares you for tomorrow’s as well.
You’ll learn:
- Internet
- Multimedia
- Security
- Web development
- Programming
11
CS50's Computer Science for
Business Professionals
Harvard University 6 weeks
Description:
This is CS50’s introduction to computer science for business professionals, designed for
managers, product managers, founders, and decision-makers more generally. Whereas CS50
itself takes a bottom-up approach, emphasizing mastery of low-level concepts and
implementation details thereof, this course takes a top-down approach, emphasizing mastery of
high-level concepts and design decisions related thereto. Through lectures on computational
thinking, programming languages, internet technologies, web development, technology stacks,
and cloud computing, this course empowers you to make technological decisions even if you
are not a technologist yourself. You’ll emerge from this course with first-hand appreciation of
how it all works and all the more confident in the factors that should guide your
decision-making..
You’ll learn:
- Computational thinking
- Programming languages
- Internet technologies
- Web development
- Technology stacks
- Cloud computing
12
Build a Modern Computer from First
Principles: From Nand to Tetris
Hebrew University of Jerusalem 6 weeks
Description:
What you’ll achieve:
In this project-centered course* you will build a modern computer system, from the ground up.
We’ll divide this fascinating journey into six hands-on projects that will take you from
constructing elementary logic gates all the way through creating a fully functioning general
purpose computer. In the process, you will learn - in the most direct and constructive way - how
computers work, and how they are designed.
*About Project-Centered Courses: Project-centered courses are designed to help you complete a
personally meaningful real-world project, with your instructor and a community of learners with
similar goals providing guidance and suggestions along the way. By actively applying new
concepts as you learn, you’ll master the course content more efficiently; you’ll also get a head
start on using the skills you gain to make positive changes in your life and career. When you
complete the course, you’ll have a finished project that you’ll be proud to use and share.
Syllabus:
Course format:
The course consists of six modules, each comprising a series of video lectures, and a project. You
will need about 2-3 hours to watch each module's lectures, and about 5-10 hours to complete
each one of the six projects. The course can be completed in six weeks, but you are welcome to
take it at your own pace. You can watch a TED talk about this course by Googling "nand2tetris
TED talk".
- Introduction
Course introduction and overview, the roles of abstraction and implementation in systems design,
the road ahead.
13
- Boolean Functions and Gate Logic
We will start with a brief introduction of Boolean algebra, and learn how Boolean functions can be
physically implemented using logic gates. We will then learn how to specify gates and chips using
a Hardware Description Language (HDL), and how to simulate the behavior of the resulting chip
specifications using a hardware simulator. This background will set the stage for Project 1, in which
you will build, simulate, and test 15 elementary logic gates. The chipset that you will build this
module will be later used to construct the computer's Arithmetic Logic Unit (ALU) and memory
system. This will be done in modules 2 and 3, respectively.
- Memory
Having built the computer's ALU, this module we turn to building the computer's main memory
unit, also known as Random Access Memory, or RAM. This will be done gradually, going bottom-up
from elementary flip-flop gates to one-bit registers to n-bit registers to a family of RAM chips.
Unlike the computer's processing chips, which are based on combinational logic, the computer's
memory logic requires a clock-based sequential logic. We will start with an overview of this
theoretical background, and then move on to build our memory chipset.
- Machine Language
A critically important aspect of building a new computer system is designing the low-level
machine language, or instruction set, with which the computer can be instructed to do various
things. As it turns out, this can be done before the computer itself is actually built. For example, we
can write a Java program that emulates the yet-to-be-built computer, and then use it to emulate
the execution of programs written in the new machine language. Such experiments can give us a
good appreciation of the bare bone "look and feel" of the new computer, and lead to decisions
that may well change and improve both the hardware and the language designs. Taking a similar
approach, in this module we assume that the Hack computer and machine language have been
built, and write some low-level programs using the Hack machine language. We will then use a
supplied CPU Emulator (a computer program) to test and execute our programs. This experience
will give you a taste of low-level programming, as well as a solid hands-on overview of the Hack
computer platform.
14
Modern Robotics, Course 1:
Foundations of Robot Motion
Northwestern University 4 weeks
Description:
Do you want to know how robots work? Are you interested in robotics as a career? Are you
15
willing to invest the effort to learn fundamental mathematical modeling techniques that are
used in all subfields of robotics?
If so, then the "Modern Robotics: Mechanics, Planning, and Control" specialization may be for
you. This specialization, consisting of six short courses, is serious preparation for serious
students who hope to work in the field of robotics or to undertake advanced study. It is not a
sampler.
In Course 1 of the specialization, Foundations of Robot Motion, you will learn fundamental
material regarding robot configurations, for both serial robot mechanisms and robots with
closed chains. You will learn about configuration space (C-space), degrees of freedom, C-space
topology, implicit and explicit representations of configurations, and holonomic and
nonholonomic constraints. You will also learn how to represent spatial velocities and forces as
twists and wrenches. This material is at the core of the study of anything that moves (e.g.,
robots).
This course follows the textbook "Modern Robotics: Mechanics, Planning, and Control" (Lynch
and Park, Cambridge University Press 2017). You can purchase the book or use the free preprint
pdf. You will build on a library of robotics software in the language of your choice (among
Python, Mathematica, and MATLAB) and use the free cross-platform robot simulator V-REP,
which allows you to work with state-of-the-art robots in the comfort of your own home and with
zero financial investment
Syllabus:
16
Modern Robotics, Course 2:
Robot Kinematics
Northwestern University 4 weeks
Description:
In Course 2 of the specialization, Robot Kinematics, you will learn to solve the forward
kinematics (calculating the configuration of the "hand" of the robot based on the joint values)
using the product-of-exponentials formula. Your efforts in Course 1 pay off handsomely, as
forward kinematics is a breeze with the tools you've learned. This is followed by velocity
kinematics and statics relating joint velocities and forces/torques to end-effector twists and
wrenches, inverse kinematics (calculating joint values that achieve a desired "hand"
configuration), and kinematics of robots with closed chains.
17
Syllabus:
- Chapter 4: Forward Kinematics
Product of exponentials formula for forward kinematics in the space frame and the
end-effector frame.
- Chapter 5: Velocity Kinematics and Statics
Velocity kinematics using the space Jacobian and body Jacobian, statics of open chains,
singularities, and manipulability.
- Chapter 6: Inverse Kinematics
Analytical and numerical inverse kinematics.
- Chapter 7: Kinematics of Closed Chains
Forward kinematics, inverse kinematics, velocity kinematics, and statistics of closed
chains.
Description:
In Course 3 of the specialization, Robot Dynamics, you will learn efficient numerical algorithms
for forward dynamics (calculating the robot's acceleration given its configuration, velocity, and
joint forces and torques) and inverse dynamics (calculating the required joint forces and torques
given the robot's configuration, velocity, and acceleration). The former is useful for simulation,
and the latter is useful for robot control. You will also learn how to plan robot trajectories subject
to dynamic constraints.
This course follows the textbook "Modern Robotics: Mechanics, Planning, and Control" (Lynch
and Park, Cambridge University Press 2017). You can purchase the book or use the free preprint
pdf. You will build on a library of robotics software in the language of your choice (among
Python, Mathematica, and MATLAB) and use the free cross-platform robot simulator V-REP,
which allows you to work with state-of-the-art robots in the comfort of your own home and with
zero financial investment
18
Syllabus:
Description:
In Course 4 of the specialization, Robot Motion Planning and Control, you will learn key concepts
of robot motion generation: planning a motion for a robot in the presence of obstacles, and
real-time feedback control to track the planned motion. Chapter 10, Motion Planning, of the
"Modern Robotics" textbook covers foundational material like C-space obstacles, graphs and
trees, and graph search, as well as classical and modern motion planning techniques, such as
grid-based motion planning, randomized sampling-based planners, and virtual potential fields.
Chapter 11, Robot Control, covers motion control, force control, and hybrid motion-force control.
19
Syllabus:
Computer Architecture
Northwestern University
Description:
In this course, you will learn to design the computer architecture of complex modern
microprocessors.
Syllabus:
Introduction, Instruction Set Architecture, and Microcode
This lecture will give you a broad overview of the course, as well as the description of
architecture, micro-architecture and instruction set architectures.
- Pipelining Review
This lecture covers the basic concept of pipeline and two different types of hazards.
- Cache Review
20
This lecture covers control hazards and the motivation for caches.
- Superscalar 1
This lecture covers cache characteristics and basic superscalar architecture.
- Superscalar 3
This lecture covers different kinds of architectures for out-of-order processors.
- Superscalar 4
This lecture covers the common methods used to improve the performance of out-of-order
processors including register renaming and memory disambiguation.
- VLIW 1
This lecture covers the basic concept of very long instruction word (VLIW) processors.
Description:
This course covers the JSON and XML standards for semistructured data, along with query
languages and schema declaration features for XML.
Syllabus:
- The XML Data section of this course introduces the XML model for semistructured and
self-describing data, including DTDs and some features of XML Schema.
- The JSON Data section of this course introduces the JSON model for human-readable
structured or semistructured data.
- The XPath and XQuery section of this course covers the XPath language for processing
XML data, along with many features of the more advanced XQuery language.
- The XSLT section of this course provides a general introduction to the XSLT rule-based
language for querying and transforming XML data.
21
You’ll Learn:
- The XML model for semistructured and self-describing data, including DTDs and some
features of XML Schema
- The JSON model for human-readable structured or semistructured data
- The XPath language for processing XML data, and many features of the more advanced
XQuery language
- An introduction to the XSLT rule-based language for querying and transforming XML
data.
*When I completed this online content, each section of this course was represented
separately as each its own “course”. It has since been consolidated.
Description:
This course covers underlying principles and design considerations related to databases; it can
be taken either before or after taking other courses in the Databases series.
22
Syllabus:
- The Relational Algebra section of this course teaches the algebraic query language
that provides the formal foundations of SQL.
- The Relational Design Theory section of the course provides comprehensive coverage
of dependency theory and normal forms in relational databases, a well-accepted
theoretical framework for developing good relational database schemas.
- The Unified Modeling Language section of this course introduces the data-modeling
component of UML, and describes how UML diagrams are translated to relational
database schemas.
You’ll Learn:
- Relational algebra – the algebraic query language that provides the formal foundations
of SQL.
- Dependency theory and normal forms in relational databases as the basis of schema
design
- The data-modeling component of the Unified Modeling Language (UML), how UML
diagrams are translated to relations
*When I completed this online content, each section of this course was represented
separately as each its own “course”. It has since been consolidated.
Description:
23
You’ll learn:
- Introduction to the relational model and concepts in relational databases and relational
database management systems.
- Comprehensive coverage of SQL, the long-accepted standard query language for
relational database management systems.
*When I completed this online content, each section of this course was represented
separately as each its own “course”. It has since been consolidated.
24
Databases: Advanced Topics in SQL*
Stanford University 2 weeks
Description:
This course is broad and practical, covering indexes, transactions, constraints,
triggers, views, and authorization, all in the context of relational database
systems and the SQL language. This course builds on concepts introduced in
Databases: Relational Databases and SQL and is recommended for learners
seeking to advance their understanding and use of relational databases.
Syllabus:
- The Indexes and Transactions section of this course covers two important features of
database systems from the application builder's perspective: indexing for increased
performance, and transactions for concurrency control and failure recovery.
- The Constraints and Triggers section of this course explains key, referential integrity, and
"check" constraints, followed by comprehensive coverage of database triggers.
- The Views and Authorization section of this course provides extensive coverage of how
database views can be created, used, and updated, and introduces standard techniques
for authorization in relational databases.
You’ll learn:
*When I completed this online content, each section of this course was represented
separately as each its own “course”. It has since been consolidated.
25
Databases: OLAP and Recursion*
Stanford University 2 weeks
Description:
This course builds on concepts introduced in Databases: Relational Databases and SQL and is
recommended for learners seeking to understand On-Line Analytical Processing (OLAP) and/or
recursion in the SQL language.
Syllabus:
- The On-Line Analytical Processing section of this course introduces star schemas, the
data cube concept, and OLAP features in relational databases including the Cube and
Rollup operators.
- The Recursion section of this course covers the SQL standard for queries over
recursively-defined relations.
You’ll learn:
- Star schemas, the data cube concept, and On-Line Analytical Processing (OLAP) features
in relational databases including the Cube and Rollup operators
- The SQL standard for queries over recursively-defined relations.
*When I completed this online content, each section of this course was represented
separately as each its own “course”. It has since been consolidated.
26
Introduction to Embedded Systems
Software and Development
Environments
University of Colorado Boulder 4 weeks
Description:
This course is focused on giving you real-world coding experience and hands-on project work
with ARM-based Microcontrollers. You will learn how to implement software configuration
management and develop embedded software applications. Course assignments include
creating a build system using the GNU Toolchain GCC, using Git version control, and developing
software in Linux on a Virtual Machine. The course concludes with a project where you will
create your own build system and firmware that can manipulate memory.
Syllabus:
- Embedded System Development Components
Module 1 will introduce the learner to the components of your embedded system
software development process. This module will be a quick overview for many topics
with detailed analysis to follow in later modules and courses. We start with defining the
hardware and software building blocks of Embedded Systems which will include a
C-programming refresher. Next, you will learn about the important tools a developer will
need to use to help design, build and manage their designs. This includes development
environments, version control and the hardware kits to install on. Learners will install and
use a Virtual machine to complete Week 1 Application Assignment.
27
systems in their design. Learners will understand how the software-to-hardware
mapping occurs for their designs including differentiating between your program code
and your program data. Memory systems have many platform and architecture
dependencies, and you will begin to learn about some of the fundamental concepts a
software engineer needs to know to utilize all parts of an embedded system’s memory.
- Final Assessment
During this week you are going to combine what you have learned in modules 1-3 to
write some memory manipulation software, incorporate it into your build system and
then run some test functions. At the end of the assignment you will perform a detailed
code review of other learners’ software. Reviewing other learners' code is very important
for both your growth of software design but also for the coder to gain valuable feedback.
Professional software engineers regularly go through software reviews when developing
code.
28
Description:
Embedded Software and Hardware Architecture is a first dive into understanding embedded
architectures and writing software to manipulate this hardware. You will gain experience writing
low-level firmware to directly interface hardware with highly efficient, readable and portable
design practices. We will now transition from the Host Linux Machine where we built and ran
code in a simulated environment to an Integrated Development Environment where you will
build and install code directly on your ARM Cortex-M4 Microcontroller. Course assignments
include writing firmware to interact and configure both the underlying ARM architecture and
the MSP432 microcontroller platform. The course concludes with a project where you will
develop a circular buffer data structure.
In this course you will need the Texas Instruments LaunchPad with the MSP432 microcontroller
in order to complete the assignments. Later courses of the Specialization will continue to use
this hardware tool to develop even more exciting firmware.
Syllabus:
- Manipulating Memory
Module 2 will introduce the learner to more advanced firmware techniques as well move
us into some hands on firmware for the microcontroller. We start by building our own
memory access methods that will allow a programmer to manipulate peripheral
memory bit fields to configure microcontroller peripherals and core architecture
concepts. This will include more complex use of pointers for register definition files and
function pointers for interrupt vector tables The module concludes with an in-depth look
into the features of on-target debugging on a microcontroller and a hands-on example.
29
software engineer needs to know to utilize all parts of an embedded system’s memory.
Description:
After completion of this course, you will gain an understanding of issues related to
electromagnetic interference (EMI) and electromagnetic compatibility (EMC), the need for input
filters and the effects input filters may have on converter responses. You will be able to design
properly damped single and multi-section filters to meet the conducted EMI attenuation
requirements without compromising frequency responses or stability of closed-loop controlled
power converters.
30
● Understand conducted electromagnetic interference (EMI) and the need for input filter
● Understand input filter design principles based on attenuation requirements and impedance
interactions.
Syllabus:
Description:
This course can also be taken for academic credit as ECEA 5340, part of CU Boulder’s Master of
Science in Electrical Engineering degree.
- Understand how to specify the proper thermal, flow, or rotary sensor for taking real-time
process data.
- Implement thermal sensors into an embedded system in both hardware and software.
- Add the sensor and sensor interface into a microprocessor based development kit.
- Create hardware and firmware to process sensor signals and feed data to a
31
microprocessor for further evaluation.
- Study sensor signal noise and apply proper hardware techniques to reduce it to
acceptable levels.
- Use computer-aided tools and simulations to verify input filter design.
Syllabus:
- Thermal Sensors
In module 1 you will learn how to specify and use temperature sensors in an embedded circuit.
First, you will learn about common types of sensors and actuators found in common products
such as smartphones and automobiles. Then you will get a high-level overview of analog and
digital interfaces, followed by a deep dive into thermistors, RTD’s, and thermocouples. For each
of these three types of thermal sensors, we define the core theory and formulae, give you
examples of how commercial sensors are packaged, and explain what you need to know to
purchase them on a web site.
32
Motors and Motor Control
Circuits
University of Colorado Boulder 4 weeks
Description:
This course can also be taken for academic credit as ECEA 5341, part of CU Boulder’s Master of
Science in Electrical Engineering degree.
This is our second course in our specialization on Embedding Sensor and Motors. To get the
most out of this course, you should first take our first course entitled Sensors and Sensor
Circuits. After taking this course, you will be able to:
33
Syllabus:
- AC Motor Designs
In module 1 you will learn principles of operation of AC induction motors, both single and
3-phase types. You will then learn how to interpret data from torque speed curves, and how to
optimize data in these curves based on electrical resistance, inductance, and capacitance. Then
you will learn about different types of single phase motors, featuring a video analysis of a split
phase motor used in a clothing dryer. You will also learn about typical applications for single
phase motors, which will assist you in picking the right one for an application.
- AC Motor Control
In module 2 you will learn the details of AC motor specifications and enclosures, as well as how
these details are governed by national and international design standards. Then you will learn a
detailed methodology for researching design requirements for AC motors, and how to use these
requirements to pick the right motor for your needs. Afterwards, you will have lessons on AC
motor control components and systems, both manual and automatic. This will culminate in
training for you on AC variable speed drives.
- DC Motors
In module 3 you will learn principles of DC motors, traditional brushed motors, as well as
electronically driven brushless motors. We will discuss shunt wound, series wound, compound
wound, servo, stepper, and torque motors, with detailed explanation of how commutation and
control is implemented in these designs. We will have a lab exercise for you on DC motor speed
measurement. We will have another video analysis for you, this time featuring the teardown of a
paper shredder. Then you will learn a detailed methodology for researching design
requirements for DC motors, and how to use these requirements to pick the right motor for your
needs.
34
Pressure, Force, Motion, and Humidity
Sensors
University of Colorado Boulder 4 weeks
Description:
"Pressure, Force, Motion, and Humidity Sensors" can also be taken for academic credit as ECEA
5342, part of CU Boulder’s Master of Science in Electrical Engineering degree.
This is our third course in our specialization on Embedding Sensor and Motors. To get the most
out of this course, you should first take our first course entitled Sensors and Sensor Circuits. Our
first course gives you a tutorial on how to use the hardware and software development kit we
have chosen for the lab exercises. This third course assumes that you already know how to use
the kit.
Syllabus:
- Pressure Sensors
In module 1 you will learn how to specify and use various types of pressure sensors for an
embedded circuit. First, you will learn about piezoresistive, capacitive, and vacuum sensors. This
includes a deep dive into the piezoresistive effect and how a Wheatstone bridge is used in these
systems. This is followed by a discussion on pressure transmitters and how to calculate an error
budget. Finally, we will give you examples of commercial pressure sensors and explain what you
need to know to purchase them on a web site.
35
- Force and Strain Sensors and Touch Screens
In module 2 you will learn how to specify and use various types of force and strain sensors for an
embedded circuit. First, you will learn about how strain gauges use the piezoresistive effect and
Wheatstone bridges to output a strain signal. Then you will learn how load cells use strain gauges
to output a force signal. We have a video on a teardown of a weight scale for you to watch, where
we teach you how the strain gauges are arranged in an unusual bridge circuit. Finally, we teach
you about how touch screens used in kiosks, PC's and smartphones work. We have a lab exercise
for you to perform on strain gauges, where you will get hands-on experience wiring the gauges
into the PSoC system, and writing code to read the gauges.
Description:
"Sensor Manufacturing and Process Control" can also be taken for academic credit as ECEA
36
5343, part of CU Boulder’s Master of Science in Electrical Engineering degree.
This is our fourth course in our specialization on Embedding Sensors and Motors. To get the
most out of this course, you should first take our first course entitled "Sensors and Sensor
Circuits", our second course entitled "Motor and Motor Control Circuits", and our third course
entitled "Pressure, Force, Motion, and Humidity Sensors". Our first course gives you a tutorial on
how to use the hardware and software development kit we have chosen for the lab exercises.
Our second and third courses give you three hands-on lab experiments using the kit. This third
course assumes that you already know how to use the kit.
You will learn about sensor signal characterization and manufacturing techniques and how to
optimize the accuracy of sensors. You will also learn about more advanced sensors,
proportional-integral-derivative (PID) control, and how this method is used to give you a closed
loop sensor feedback system.
Syllabus:
- Process Control
In module 1 you will learn how companies perform process control in their factories. First, you will
review how 2nd order transfer functions work, which is the theoretical basis for much of process
control. Then you will learn how plant-wide control systems are implemented and details about
the software protocols used to communicate between plant controllers and sensors. Then you will
perform a lab for PID control with your PSoC system, which will get you some hands-on
experience with this type of control system.
- Sensor Characterization
In module 2 you will learn how sensor software is adjusted for optimal performance in the field.
First, you will review how non-linear sensor response curves are linearized for more predictable
performance. Then you will learn how sensor output is automatically adjusted to account for wide
ranges of ambient temperature. Next, you will review how sensors are calibrated, and the
certification procedures that companies follow to demonstrate calibration capability. Afterwards,
you will study how linearization, compensation, and calibration play into sensor accuracy specs.
Finally, you will perform a lab for closed loop motor control with your PSoC system, which will get
you some hands-on experience with closed loop systems.
- Advanced Sensors
In module 3 you will first learn how radar level transmitters work, and how they are used to provide
accurate readings in all types of process tank conditions. Then you will learn about components
and design issues for LIDAR systems used in self driving vehicles. Afterwards, we will teach you
about how sensors are customized for medical applications. This includes pressure and
37
temperature sensors that are implanted during surgical procedures, as well as pressure and flow
sensors used in patient care equipment.
- Sensor Manufacturing
In module 4 you will learn how sensors are manufactured. First you will learn how MEMS
construction is used to make miniature flow, pressure, and temperature sensors. Afterwards, we
will teach you how micro-electronic connections attach the MEMS sensors to connections within
plastic encapsulated chips. Then we will discuss how sensor chips are enclosed within sensor
housings, and how different designs of housings are used for different applications. Then you will
learn how sensors are tested for high reliability in the field.
Description:
This course is focused on giving you real-world coding experience and hands-on project work
with ARM-based Microcontrollers. You will learn how to implement software configuration
management and develop embedded software applications. Course assignments include
creating a build system using the GNU Toolchain GCC, using Git version control, and developing
software in Linux on a Virtual Machine. The course concludes with a project where you will
create your own build system and firmware that can manipulate memory.
38
Syllabus:
- Final Assessment
During this week you are going to combine what you have learned in modules 1-3 to
write some memory manipulation software, incorporate it into your build system and
then run some test functions. At the end of the assignment you will perform a detailed
code review of other learners’ software. Reviewing other learners' code is very important
for both your growth of software design but also for the coder to gain valuable feedback.
Professional software engineers regularly go through software reviews when developing
code.
39
Algorithms: Design and Analysis
Stanford University 6 weeks
Description:
The course is rigorous but emphasizes the big picture and conceptual understanding over
low-level implementation and mathematical details. After completing this course, you will have
a greater mastery of algorithms than almost anyone without a graduate degree in the subject.
Syllabus:
Specific topics in the course include: "Big-oh" notation, sorting and searching, divide and
conquer (master method, integer and matrix multiplication, closest pair), randomized
algorithms (QuickSort, contraction algorithm for min cuts), data structures (heaps, balanced
search trees, hash tables, bloom filters), graph primitives (applications of BFS and DFS,
connectivity, shortest paths).
Learners will practice and master the fundamentals of algorithms through several types of
assessments. There are 6 multiple choice quizzes to test your understanding of the most
important concepts. There are also 6 programming assignments, where you implement one of
the algorithms covered in lecture in a programming language of your choosing. The course
concludes with a multiple-choice final. There are no assignment due dates and you can work
through the course materials and assignments at your own pace.
40
Algorithms: Design and Analysis 2
Stanford University 6 weeks
Description:
This course is focused on giving you real-world coding experience and hands-on project work
with ARM-based Microcontrollers. You will learn how to implement software configuration
management and develop embedded software applications. Course assignments include
creating a build system using the GNU Toolchain GCC, using Git version control, and developing
software in Linux on a Virtual Machine. The course concludes with a project where you will
create your own build system and firmware that can manipulate memory.
Syllabus:
Specific topics in Part 2 include: greedy algorithms (scheduling, minimum spanning trees,
clustering, Huffman codes), dynamic programming (knapsack, sequence alignment, optimal
search trees, shortest paths), NP-completeness and what it means for the algorithm designer,
analysis of heuristics, local search.
Learners will practice and master the fundamentals of algorithms through several types of
assessments. There are 6 multiple-choice problem sets to test your understanding of the most
important concepts. There are also 6 programming assignments, where you implement one of
the algorithms covered in lecture in a programming language of your choosing. The course
concludes with a multiple-choice final.
41
Introduction to Computer Networking
Stanford University 10 weeks
Description:
The Internet drives tremendous change in the world while continuously changing and evolving
itself. This course teaches the concepts and general principles of the underlying networks of the
Internet.
Learn about the structure and components of computer networks, packet switching, and layer
architectures as well as a variety of applications. Gain the experience and tools required to use
and write protocols. Explore issues of network security.
You’ll learn:
42
Compilers
Stanford University 10 weeks
Description:
You will learn how a program written in a high-level language designed for humans is
systematically translated into a program written in low-level assembly more suited to machines.
Along the way we will also touch on how programming languages are designed, programming
language semantics, and why there are so many different kinds of programming languages.
Syllabus:
The course lectures will be presented in short videos. To help you master the material, there will
be in-lecture questions to answer, quizzes, and two exams: a midterm and a final. There will also
be homework in the form of exercises that ask you to show a sequence of logical steps needed
to derive a specific result, such as the sequence of steps a type checker would perform to type
check a piece of code, or the sequence of steps a parser would perform to parse an input string.
This checking technology is the result of ongoing research at Stanford into developing
innovative tools for education, and we're excited to be the first course ever to make it available to
students.
An optional course project is to write a complete compiler for COOL, the Classroom Object
Oriented Language. COOL has the essential features of a realistic programming language, but is
small and simple enough that it can be implemented in a few thousand lines of code. Students
who choose to do the project can implement it in either C++ or Java.
43