You can download the lectures here (in PDF format). I will try to upload lectures prior to their corresponding classes.

  • Lab14 - All other programming languages
    tl;dr: Our goal for today was to learn and code as many languages as possible. First, we started everyone off by writing a piece of code that involved console input/output, a conditional statement and a loop statement in C++ using STL library. Next, we introduced the most popular programming language, JavaScript. We started by writing some console app using nodejs. Next, we explained that JavaScript is the only programming language that runs inside the browser, and hence its popularity. We demonstrated how the 'document' object is provided by the browser when run inside the browser and how it can be used to access or modify HTML components. After the break, we continued our quest for learning programming languages to Java. We explained how Java is different from both interpreted and compiled languages by way of producing byte-code using javac.exe and java.exe for running the code. After students wrote the same piece of code in Java, we moved onto C-Sharp and repeated the same process for C-Sharp using .NET Core 3.1 and dotnet.exe. Due to student exhaustion we only demonstrated PHP and Go Language without students compiling/coding on their own machine. We also only looked at some Perl, Kotlin, Kotlin Script, F-Sharp and Rust code.
  • Lecture 28 - Enum/Goto in C, Building/Testing troubleshooting, C++
    tl;dr: We finished off C by explaining enum types, goto statements and unions. Next, we did some troubleshooting for building and compiling. Finally, we examined what other students mean by C++ and learned that much from the language.
  • Lecture 27 - File handling in Python and do-while, switch statement in C
    tl;dr: Today we explained file handling in Python. We also did some functional programming in Python by passing functions as parameters. Next, we talked about do-while and switch statements in C.
  • Lab 13 - Explaining C Assignment 2 + Compiling/Linking workshop + VSCode Tasks
    tl;dr: The first part of the lab was lead by Mr. Shaheenfar for multidimensional arrays, structs and function pointers (not on tape). For, the second part, after a quick review of the upcoming C assignment, we explained how compiling and linking are two separate steps in the build process. Next, we learned how to configure VSCode tasks to compile, link, ... with different configurations.
    [video] [codes]
  • Lecture 26 - argc/argv, char **, const pointers, multi diminsional array, function pointer
    tl;dr: Today we started with argc/argv and how to use them. Next we moved onto char** and int** examples for multi dimensional arrays. We also explained const pointers and pointers to const in addition to observing how pointers are different in 64bit binaries. Finally we demonstrated how using function pointers can simplify code.
  • Lecture 25 - struct, "." and "->" operators, struct memory layout, compiling and linking
    tl;dr: Today we introduced struct, the "." and "->" operators and how struct is laid out in memory. We also used the -exec x/16xb commands in the debugger console inside vscode to inspect memory. We demonstrated how passing by value differs from passing by pointer for a struct variable. Next, we introduced const and typedef in addition to answering questions about string literals in C. Finally, we explained how compiling and linking code are related in C and how they can be done in separate steps.
  • Lab 12 - Explaining Catch2 test framework on Azure-DevOps + First C Assignment
    tl;dr: We went through the first C assignment document. First, we explained how to create the pipeline and the required shell-script for building and testing. Next, we went through each test case and explained the function that needs to be written to pass the test.
    [video]
  • Session 23 - Heap/Stack Memory, malloc, Unit Testing in C with Catch2 and vs-code
    tl;dr: We started the day with re-reinforcing what a variable is and where it points to in stack memory. Next we introduced heap memory and malloc. Finally, we introduced the Catch2 test framework and how it can be configured for unit testing in VS-Code and Azure.
  • Lab 11 - Git Cleaning, C bit manipulation, Word Processors and LaTeX
    tl;dr: We started the day by cleaning up our git repository by removing all .git file sand *cache* python files and adding a .gitignore file to not add these files to the repo again. Next, did some bit manipulation in C and used the gdb debugger from VSCode to view the memory. Next, played with various features in MS-Word and explained the WYSIWYG model. Finally, we installed MikTeX and VSCode LaTeX extension to build LaTeX documents in vscode.
  • Lecture 22 - Bit Operators
    tl;dr: We warmed up today with a more in depth view of how the 'for' loop works. Next, we moved onto operators, more specifically bit operators like and,or,xor,shift-left and shift right. We then wrote a function to write a number in binary format. In the process, we also saw how ASCII codes work in variables of type char and also saw the the ternary operator.
  • TA Session - C Programming - memory, pointers and arrays
    tl;dr: Today we reinforced the idea of a variable being a place in memory through the visual studio memory viewer. We also demonstrated what a pointer is through & operator and also the dereferencing operator, *. We then showed how an array of characters is allocated and assigned in memory, in addition to how the null terminator is used in C. We then used what we learned to implement a function that repeats a character string n times. Finally, we introduced the use of pointers to return multiple values from a function.
    [video] [codes]
  • Lecture 21 - C Programming - array, character array, function, casting
    tl;dr: We started off today by explaining what needs to be done for creating a course website for faculty members. Next, we briefly talked about Microsoft Ignite and Amazon Reinvent conferences last week. We then continued our discussion about arrays, character arrays, strings, pointers, functions and casting.
  • Lecture 20 - C Programming - Data Types, variable, for/while/if, array
    tl;dr: Once again we reviewed git concepts. Next, we talked about what is involved in learning a new language. We touched on many topics such as compiling vs linking, .C and .H files, compiler options and for/while/if statements. Finally, we introuced the & and * operators and introduced arrays and demonstrated how we can use pointer arithmetic to access array elements.
  • Lecture 19 - C and C++ First Session
    tl;dr: We first reviewed git and Azure DevOps and troubleshooted some issues students were having. Next, we introduced the C and C++ languages and their differences. We then created a helloworld program and compiled and ran it from the command line. We introduced the main function, how to capture its return value through %ERRORLEVEL% and how to capture parameters passed to the exectuable through the argc and argv parameters. We finally introduced the prinf and scanf functions. The assignment for this session is to redo the Rocket assignment from the Python program.
  • Lab8 - Azure DevOps, Git, Feature Branch, Branch Policies, Azure Build Pipeline, PreExam0
    tl;dr: Today we reviewed basic concents in GIT and how it can be used to maintain a holy/clean/tested version of our code/software. We explained how to define a build on Azure that would build and test our code and set it as a branch policy. Finally, we showed how we plan to use git and Azure DevOps platform to take an exam.
  • Lecture 18 - Pre Exam -1, Git, Azure DevOps
    tl;dr: pre exam + git + Azure DevOPs
  • Lab 7 - Internet, IP, NetMask, Routers, Routing Table, TraceRoute IPM, Proxies and Git Proxy
    tl;dr: We talked about how we are not connected to the internet and how we could get connected. We also showed how to configure http.proxy for git using a proxy server. We also discussed commands like ping, netstat, arp, route and tracert.
    [video]
  • Lecture 16 - Internet, Proxies and Math 101
    tl;dr: We talked about how I got connected to the internet. Next we focused on some math 101 problems and how to solve them computationally and write unit tests for them in pytest.
  • Lecture 15 - VPython, PyTest, Math 101
    tl;dr: We refactored our code to slide multiple objects down a slope with various speeds. Next, we reviewed pytest and started working on math 101 problems.
  • Lecture 14 - VPython - simulating a box sliding down an inclined plain.
    tl;dr: We simulated a box sliding down an inclinded plain. We also used a physics util library to plot distance, velocity and acceleration against time and show how each one is the derivative/integral of the other.
  • Lecture 13 - VPython - simulating N balls bouncing around in a box.
    tl;dr: In this lecture we went though the step by step process of simulating N objects bouncing around in a box. They key points of this lesson was Introduction to VPython, step by step thinking and refactoring code to make it easier to understand and easier to extend.
  • Lecture 12 - Turtle Graphics - Simulating throwing an object on a slope.
    tl;dr: We introduced the turtle graphics library and to help students prepare for the Physics 1 exam wrote code to simulate the an object being thrown off a slope with a specific angle using turtle graphics.
  • Lecture 11 - Hackathon recap and demo planing
    tl;dr: We reviewed all the components and key concepts used in the Hackathon project including browser, server, client, python, django, html, template, database, ... . We then did a quick review of all Hackathon projects and planned the department Hackathon demo.
  • Lab 5- Hackathon
    tl;dr: We used this lab session to troubleshoot individual Hackathon projects.
  • Lab 4 - HTML/Bootstrap/Django Workshop
    tl;dr: In this session students followed along with creating HTML files and using bootstrap components to make it pretty. Next, they went through a simple django demo to create a single model with two pages, one for add and another one for viewing all data. The commands.txt referenced in the second video can be found in the attached Lab4.zip code file along with the entire django_demo1 folder. ِYou can download WinMerge from downloads.sourceforge.net/winmerge/WinMerge-2.16.4-Setup.exe. Don't forget to add its path (C:\Program Files (x86)\WinMerge) to the environment path so you can call winmergeu.exe from anywhere without entering the full path. Also, the 3rd video demonstrates how to host your app on pythonanywhere.com.
  • Lecture 8 - Web App Development
    tl;dr: We spent all of today on what a web application is. We started off with an example web app and explained what we mean by DESIGNING the wireframe user interface of an app on mockflow. Next, we explained what HTML is and how it can be used to develop an application. We showed how a Django template can leverage python to create different HTML pages and how different HTML pages can be used to create any user interface. We also talked about javascript and how that can be used to alter HTML elements without contacting the server. We finally introduced the Bootstrap css/javascript library to easily create nice UI elements. At the end we also briefly talked about what a database is and how it can be used to store data. Please see the video and attached code for more info. PS: The VS-Code extensions we used for web development were: Auto Complete Tag, Beautify, Live Server, Bootstrap 4. You can find a list of useful vs-code extensions for web development here: https://codeforgeek.com/best-visual-studio-code-extensions-web-development/
  • TA Session 4 - Django
    tl;dr: We had the first part of the Django workshop offered by Mr. Hossein Rahimi. He demonstrated a simple app for budget management where we could record budgets as a number and description. See the attached video for more information.
    [video]
  • Session 7 - Classes
    tl;dr: After the usual logistics... we started off explaining while/break. We spent a few minutes explaining how one would swap variable values. Finally, we introduced classes and how we can use them to bind variables and functions together. At the end we reviewed lists and barely introduced tuples.
  • Lab3 - Python Debugging/Call Stack/Variable Scope/Unit Testing
    tl;dr: In the first part, we spent time on variable scopes and inspecting the call stack under the debugger. We then introduced assert and finally introduced unit testing using the pytest framework. In the second part, we learned about lists, tuples and dictionaries.
  • Session 6 - Python Debugging/Fuctions/Return Value/Testing
    tl;dr: After covering the logistics, we continued with the basics of the Python programming language. We spent time on functions, debugging, return values, if statements and while loops. Students wrote code to print all numbers under 100 that are dividable by 3 and 5. We finished the class with an exercise to write a program to check whether a number is prime or not.
  • Session 5 - Hackathon Intro - Python Continued
    tl;dr: We started off by introducing our plan for the Hackathon. We then moved on to write/use some command line scripts to clone student repositories and then started looking at one student's implementation of the make_rocket homework. Then we wrote a simple function to make the rocket head. Finally we continued our progress on Python with default parameters, variable types and type conversions. Students are expected to work on excersizes in the 2.5 section of Vance Morrison's course notes and push them on git under the A1 folder. We will continue our discussion tomrrow at 1pm.
  • Lab 2
    tl;dr: We talked about how to edit your github.io website. Then we had a quick introduction to networking and the internet, starting from the physical layer all the way up to the application layer. In the second half of the class we spent time learning about variables and functions in Python. We ended the class with a homework to build a scalable ascii-art rocket.
  • Session 4
    tl;dr: We started off by explaining prerequisites to tomorrow's computer lab. We then explained how hard drives work and handed out hard drives for craft projects. All students must create a blog post on their website on creating their craft (or choose another topic of interest if you are not making a craft). We then talked about what a compiler does and looked at some disassembled code in visual studio. We explained how a variable is just a memory address. We stepped through code to see how the memory is updated as we change variable values. Finally, we wrote some simple python code to print out a space ship and start making functions to reduce repititions.
  • Monday TA Session
    tl;dr: Setting up AzureDevOps.
    [video]
  • Session 3
    tl;dr: After explaining the prerequisites for tomorrow's TA session and Wednesday's lab, we explained: vscode, autocomplete, syntax errors, print, input, variables, import and ploting math functions.
  • Lab 1
    tl;dr: We started off by learning about windows cmd.exe commands and bat files. Next, we copied the KeePass and SysInternals tools from flash disk to c:\tools and uncompressed them. We added the c:\tools\KeePass and c:\tools\SystemInteranlsSuite to the system path. Next we created an account on DropBox. We then created a password database using KeePass and stored it on DropBox. At the end we created an account on github.com and forked the sauleh.github.io repository from github.com/sauleh. Next session we will customize the web site to be our own.
    [video]