1(35) |
|
Lecture 1:
2022-09-01
- Class introduction/organization
- History of Bell Labs, Unix and Linux
- Command line introduction
|
Sign-up:
Select one of the offered pair-programming
lab session days according to
your schedule
|
Note:
Handouts are typeset in green
and deadlines in red.
All deadlines are due 11:59 pm.
- HW1
release
(2022-09-01)
|
2(36) |
Lecture 2:
2022-09-06
-
Manual pages and help for Linux
commands
-
Unix philosophy
-
Regular expressions and
grep
-
File attributes and permissions
-
Short and unbiased journey into text
editors
|
Lecture 3:
2022-09-08
-
Shell customization
-
I/O redirection
-
Process management
-
Environment variables and shell
scripting
|
PP2: (2022-09-09)
Git workflow and
bash scripting
|
-
Select your preferred lab sections in
my.harvard
(2022-09-06)
|
3(37)
|
Lecture 4:
2022-09-13
-
Introduction to version control
systems (VCS)
-
Centralized and distributed VCS
-
Design and inner workings of
Git
-
Git blobs, trees and commits
|
Lecture 5:
2022-09-15
-
Git status of working tree and index
-
Git remote repositories
-
Git branches
|
PP3: (2022-09-16)
Git branches and merge
conflicts
|
- HW2
release
(2022-09-13)
-
HW1
due
(2022-09-13)
-
PP1
due
(2022-09-16)
|
4(38)
|
Lecture 6:
2022-09-20
-
Introduction to Python
-
Nested environments and closures
-
Decorators
|
Lecture 7:
2022-09-22
-
Object Oriented Programming (OOP)
-
Classes in Python
-
Inheritance and polymorphism
- Quiz 1
|
PP4: (2022-09-23)
Fully connected neural networks and Python
closures
|
-
Project M1A
due
(2022-09-22)
-
PP2
due
(2022-09-23)
-
C/C++ primer class
09/19 - 09/23
|
5(39)
|
Lecture 8:
2022-09-27
-
Duck typing
-
The Python data model
-
Special methods (dunder methods)
-
Aside: software licenses and open source
|
Lecture 9:
2022-09-29
-
Python class methods, static methods,
instance methods
-
Python class attributes and instance
attributes
-
Python modules
-
Python packages and PyPI
|
PP5: (2022-09-30)
Python classes and dunder methods
|
- HW3
release
(2022-09-27)
-
HW2
due
(2022-09-27)
-
PP3
due
(2022-09-30)
-
C/C++ primer class
09/26 - 09/30
|
6(40)
|
Lecture 10:
2022-10-04
-
Preliminary automatic
differentiation (AD)
-
Derivatives and the Jacobian
-
Newton's method
-
Numerical approximation of
derivatives (finite-difference
method)
|
Lecture 11:
2022-10-06
-
Review of chain rule
-
Evaluation trace of a function and
computational graph
-
Forward mode AD
|
PP6: (2022-10-07)
Forward mode automatic differentiation
|
-
Project M1B
due
(2022-10-04)
-
PP4
due
(2022-10-07)
|
7(41)
|
Lecture 12:
2022-10-11
-
Forward mode in higher dimensions
-
Dual numbers and complex numbers
|
Lecture 13:
2022-10-13
-
Implementation of forward mode AD:
operator overloading
-
Reverse mode AD
-
Some examples AD applications and
extensions
- Quiz 2
|
PP7: (2022-10-14)
Forward mode AD, Jacobian, seed vector
|
- HW4
release
(2022-10-11)
-
HW3
due
(2022-10-11)
-
PP5
due
(2022-10-14)
|
8(42)
|
Lecture 14:
2022-10-18
-
Continuous integration (CI)
-
Testing Python code
(
pytest and
unittest )
|
Lecture 15:
2022-10-20
|
PP8: (2022-10-21)
Python virtual environments and deploying
Python packages
|
-
Project M1
due
(2022-10-20)
-
PP6
due
(2022-10-21)
|
9(43)
|
Lecture 16:
2022-10-25
-
Python virtual environments
-
Introduction to docker (OCI) containers and
Dockerfiles
-
Building your own containers and integration in CI workflows
|
Lecture 17:
2022-10-27
-
Abstract data types
-
Linked lists
-
Iterators
|
PP9: (2022-10-28)
Iterators, binary trees
|
- HW5
release
(2022-10-25)
-
HW4
due
(2022-10-25)
-
PP7
due
(2022-10-28)
|
10(44)
|
Lecture 18:
2022-11-01
-
Trees and binary trees
-
Binary search trees (BST)
-
Priority queues and heaps
|
Lecture 19:
2022-11-03
-
Python generators
-
Python coroutines
-
Introduction to Python internals
|
PP10: (2022-11-04)
Python generators
|
-
Project M2A
due
(2022-11-01)
-
PP8
due
(2022-11-04)
|
11(45)
|
Lecture 20:
2022-11-08
-
Code objects and Python bytecode
-
The Python interpreter and the
evaluation loop
-
Memory allocation in Python
-
Performance of pure Python lists and
NumPy arrays
|
Lecture 21:
2022-11-10
-
Data models and databases
-
Structured query language (SQL)
-
SQLite in Python
- Quiz 3
|
PP11: (2022-11-11)
Databases
|
- HW6
release
(2022-11-08)
-
HW5
due
(2022-11-08)
-
Project M2B
due
(2022-11-10)
-
PP9
due
(2022-11-11)
|
12(46)
|
Lecture 22:
2022-11-15
-
Databases
-
In-class exercise with SQL and Python
SQLite
|
Lecture 23:
2022-11-17
-
Databases
-
In-class exercise with SQL and Python
SQLite
-
Table joins
-
Pandas
|
PP12: (2022-11-18)
Finish in-class database exercises
|
-
PP10
due
(2022-11-18)
|
13(47)
|
Lecture 24:
2022-11-22
-
Debugging in Python
-
Generating profiles for performance
analysis
-
Bytecode instructions and
performance
|
Thanksgiving
break:
2022-11-24
|
|
-
Project M2
due
(2022-11-22)
-
PP11
due
(2022-11-25)
|
14(48)
|
Lecture 25:
2022-11-29
|
Lecture 26:
2022-12-01
|
|
-
PP12
due
(2022-12-02)
-
HW6
due
(2022-11-29)
|
15(49)
|
Reading
period: 2022-12-06
|
Exam
period:
2022-12-08
|
|
-
Project final milestone
due
(2022-12-10)
|
16(50)
|
Exam
period: 2022-12-13
|
Exam
period:
2022-12-15
|
|
|