The following are all free Computer Programming Courses for your beginning or continuing technical education. Many of these provide you with detailed instructions, lectures, videos, notes, assignments with solutions and exams with soutions. Several use an interactive feedback method for teaching the programming concepts being taught.
1. Free Computer Programming Courses
October 1, 2021
The following are all free Computer Programming Courses for your beginning or continuing
technical education. Many of these provide you with detailed instructions, lectures, videos, notes,
assignments with solutions and exams with soutions. Several use an interactive feedback method for
teaching the programming concepts being taught.
» The Structure and Interpretation of Computer Programs
These lecture videos and notes teach programming and how to use abstraction. Important
topics covered are: building abstractions, computational processes, higher-order
procedures, compound data, data abstractions, controlling interactions, generic operations,
self-describing data, message passing, streams and infinite data structures, meta-linguistic
abstraction, interpretation of programming languages, machine model, compilation, and
embedded languages.
» Introduction to Computer Science and Programming – introduces programming concepts,
methods, and techniques.
Aimed at students with little or no programming experience. It aims to provide students
with an understanding of the role computation can play in solving problems. It also aims to
help students, regardless of their major, to feel justifiably confident of their ability to write
small programs that allow them to accomplish useful goals. The class will use the Python
programming language.
» How Computers Work
Includes the basics of digital logical design, computer organization and architecture
including assembly language, processor design, memory hierarchies and pipelining.
Students examine the detailed construction of a very simple computer.
» Object-oriented Program Design and Software Engineering
The concepts of the Object-oriented paradigm using Java. The basic principles of software
engineering are emphasized. We study how to design and think in an object oriented
fashion. As a final project, students work in groups to develop a Gnutella distributed music-
sharing client.
» Algorithms
The design of algorithms is studied, according to methodology and application.
Methodologies include: divide and conquer, dynamic programming, and greedy strategies.
Applications involve: sorting, ordering and searching, graph algorithms, geometric
algorithms, mathematical (number theory, algebra and linear algebra) algorithms, and string
matching algorithms.
» Systems
2. Topics on the engineering of computer software and hardware systems: techniques for
controlling complexity, system infrastructure, networks and distributed systems, atomicity
and coordination of parallel activities, recovery and reliability, privacy of information,
impact of computer systems on society.
» Software Engineering for Web Applications
Teaches basics of designing a dynamic web site with a database back end, including
scripting languages, cookies, SQL, and HTML with the goal of building such a site as the
main (group) project Emphasizes computer-human interface and the graphical display of
information. Crucial to the project is the identification of a client with whom the group
must work with throughout the month, designing specifications, implementing them,
reviewing and evaluating, and testing.
» Artificial Intelligence
An quick overview of AI from both the technical and the philosophical points of view.
Topics discussed include search, A*, Knowledge Representation, Neural Nets.
» Unix Tutorial
A self-study workshop to review and/or learn a wide range of Unix tools, including shell
scripts, awk, lex, yacc, grep etc. This course did not give grades.
» Database Management Systems
A more formal approach to Relational Database Management Systems, compared the way
they were covered during Web Applications. Database systems are discussed from the
physical layer of B-trees and file servers to the abstract layer of relational design. Also
includes alternative and generic approaches to database design and database management
system including relational, object-relational, and object-oriented systems, SQL standards,
algebraic query languages, integrity constraints, triggers, functional dependencies, and
normal forms. Other topics include tuning database transactions, security from the
application perspective, and data warehousing.
» A Gentle Introduction to Programming Using Python
Learn how to program and code using the Python programming language. This course
teaches how to plan, layout and organize your programs, and goes over how Python is
coded and also covers its grammar.
» Introduction to Programming Using Java
This course book is directed mainly towards beginning programmers, and it is also useful
for experienced programmers who want to brush up on their Java programming and
software engineering skills.
» Introduction to Software Engineering in Java
This course teaches software engineering and programming in Java. It will give you an
understanding of how to produce and write high quality applications that accomplish real
world solutions while learning Java using utility libraries that help you become a more
3. efficient programmer.
» Introduction to Algorithms – teaches the usage of algorithms in programming and application
development.
Learn how to do mathematical modeling of computational problems. This course teaches
many common algorithms, algorithmic paradigms, and data structures used to solve these
problems. It focuses on the association between algorithms and programming, and teaches
performance measures and analysis techniques for the computational problems presented.
» CS50’s Introduction to Computer Science from Harvard University
An introduction to the intellectual enterprises of computer science and the art of
programming.
» Scripting and Programming Foundations
This course is an introduction to programming theory, covering basic elements such as
variables, data types, flow control, and design concepts. The course is language-agnostic in
nature, ending in a survey of languages and introduces the distinction between interpreted
and compiled languages.
» Introduction to Java Programming: Starting to code in Java
Learn to program with Java in an easy and interactive way.
» Introduction to Programming in C++ from NYU
Learn the fundamentals of programming in the C++ programming language, including
iteration, decision branching, data types and expression.
» How to Code: Simple Data
Learn the secret to writing well-tested and easy to improve programs, that will set you up to
master any programming language. From the University of British Columbia.
» Software Development Fundamentals
Learn the fundamentals of object-oriented programming in Java, as well as best practices of
modern software development.
» Data Structures and Advanced Programming – learn programming principals and methods via
these course webcasts.
These video course lectures explain how to use and code in Java the following:
fundamental dynamic data structures, including linear lists, queues, trees, and other linked
structures, arrays strings, abstract data types, hash tables, and storage management. Also
taught are software engineering principles and algorithms for sorting and searching.
» Linux Basics: The Command Line Interface
Learn the Linux Command Line interface and become a skilled user of this powerful
operating system.
4. » C Programming: Using Linux Tools and Libraries
Learn how to use professional tools and libraries to write and build C programs within the
Linux operating system. Receive instant feedback on your code right within your browser.
» Scripting with Python
Explore fundamental programming with hands-on activities that help you build applications
using Python.
» Modularization and C++ Program Layout – how to layout and code a program in the C++
programming language
This course discusses and covers what modular programming is all about, and reviews a C+
+ coding example that demonstrates control and specific task functions. You’ll also learn
about the layout of C++ programs and how they are structured.
» Object Oriented Programming in C++ – learn C++ development using object-oriented
programming
Apply your procedural design and programming knowledge to learn object-oriented
software engineering concepts and techniques. You will learn how to use and apply the
following object-oriented programming principles: abstraction, inheritance and
polymorphism, decomposition, and component re-use, in the context of the C++
programming language.
» C Memory Management and C++ Object-Oriented Programming
Begin coding simple C programs, and then dive into how C memory manipulation works,
and learn how to code using basic and more advanced C++ classes while using the C++
Standard Template Libraries. This course also will provide you with several technical
interview tips.
» Parallel Programming for Multicore Machines Using OpenMP and MPI
This course gets you started with learning how to program with shared and distributed
memory, and teaches you how to code using openMP and MPI. I will give you some great
hands-on experience with parallel computing focusing on numerical type applications.
» Program Design – an introductory course tutorial for leaning how to start computer programming.
Program Design will teach you step-by step how to properly begin programming in a
language that you choose. As you complete and document your tasks, your finshed program
will be less difficult to you and others to update and fix later on. This course covers three
main things you will accomplish:
* Understanding the Program
* Using Design Tools to Create a Model
* Develop Test Data”