COMSC132: Programming Concepts & Methodologies II

Fall 2024 Sam Bowne

Mondays and Wednesdays from 12:45 to 2:10

No class on Weds, Dec 11

To attend class online:
https://twitch.tv/sambowne

For interactive help, connect to:
https://zoom.us/j/4108472927
Password: student1

Schedule · Lecture Slides · Projects · Syllabus

Class Description

This course covers techniques relevant to program design and selection of data structures for larger programs. Topics covered include design techniques, effective use of recursion, algorithmic efficiency and O-notation, linked-lists, stacks, queues, trees, hash tables, heaps, graphs and sorting and searching techniques. Extensive programming of a variety of data structures is required.

Textbook

Hands-On Data Structures and Algorithms with Python: Store, manipulate, and access data effectively and boost the performance of your applications, 3rd Edition

Quizzes

The quizzes are multiple-choice, online, and open-book. However, you may not ask other people to help you during the quizzes. You will need to study the textbook chapter before the lecture covering it, and take the quiz before that class. Each quiz is due 30 min. before class. Each quiz has 5 questions, you have ten minutes to take it, and you can make two attempts. If you take the quiz twice, the higher score counts.

Use this Canvas server:

Enroll Here · View Course · Reset password

Schedule

DateDueTopic
Mon 8-26  Class Introduction


Wed 8-28  1. Python Data Types and Structures
Demo: VP 20


Mon 9-2  Holiday

Wed 9-4  Binary Games: Nybbles
Demos: VP 21, VP 23


Mon 9-9Quiz Ch 1 & 2
VP 11
2. Introduction to Algorithm Design
Binary Games: Bytes
Demos: VP 22, C 106


Wed 9-11  Demos: Binary Games: Hex , VP 24, VP 25


Mon 9-16Quiz Ch 3
VP 20 & 21
3. Algorithm Design Techniques and Strategies
Demos: VP 12, VP 26


Wed 9-18  3. Algorithm Design Techniques and Strategies
Demos: VP 27, VP 28


Mon 9-23Quiz Ch 4
VP 22 & 23
4. Linked Lists
Demo: VP 29


Wed 9-25  Demos: VP 23, VP 31


Mon 9-30Quiz Ch 5
C 106 & VP 12
5. Stacks and Queues
Demos: ED 102, more VP 26


Wed 10-2  Demos: C 101.5 (XOR), R 10, R 20


Mon 10-7Quiz Ch 6
VP 24 & VP 25
6. Trees
Demo: VP 32


Wed 10-9  Demos: C 101.6 (XOR), VP 30


Mon 10-14Quiz Ch 7
VP 26 & VP 27
7. Heaps and Priority Queues
Demo: C 101.7 (Mod 2), VP 34


Wed 10-16  7. Heaps and Priority Queues
Demo: VP 33 and 35


Mon 10-21Quiz Ch 8
VP 28
CLASS ONLINE ONLY
8. Hash Tables
Demo: VP 36


Wed 10-23  CLASS ONLINE ONLY
No new material; just Q & A


Mon 10-28Quiz Ch 9
VP 29
9. Graphs and Algorithms


Wed 10-30  Machine Learning Demos: ML 130, ML 100, ML 101, ML 102


Mon 11-4Quiz Ch 10
VP 30
10. Searching
Demo: VP 38, ML 103


Wed 11-6  Demos: VP 37, ML 104, ML 105


Mon 11-11  Holiday

Wed 11-13  Demos: VP 39, ML 112, ML 113


Mon 11-18Quiz Ch 11
VP 31
11. Sorting
Demo: ML 114


Wed 11-20  Demos: VP 40, ML 115


Mon 11-25Quiz Ch 12
VP 32
12. Selection Algorithms


Wed 11-27  Demos: ML 123, ML 126


Mon 12-2Quiz Ch 13
VP 33
13. String Matching Algorithms
Demo: ML 127


Wed 12-4  Demos: ML 128 and ML 129


Mon 12-9  Last Class


Wed 12-11  No Class

Mon 12-9
through
Tue 12-17
  Final Exam available online throughout the week.
You can only take it once.

All Quizzes due 30 min. before class

Lecture Slides

1. Python Data Types and Structures · PDF · Keynote
2. Introduction to Algorithm Design · PDF · Keynote
3. Algorithm Design Techniques and Strategies · PDF · Keynote
4. Linked Lists · PDF · Keynote
5. Stacks and Queues · PDF · Keynote
6. Trees · PDF · Keynote
7. Heaps and Priority Queues · PDF · Keynote
8. Hash Tables · PDF · Keynote
9. Graphs and Algorithms · PDF · Keynote
10. Searching · PDF · Keynote
11. Sorting · PDF · Keynote
12. Selection Algorithms · PDF · Keynote
13. String Matching Algorithms · PDF · Keynote

Projects

Enter Flags · Scoreboard · Details · Alphabetical
Please use a fake name

Scoreboard archived 12-19-24

Prepare a Python Environment

Recommended

VP 11: Python 3 on Google Colab (10)
VP 12: Debugging in Google Colab (10)

Optional

VP 10: Python 3 Installed Locally (10 extra)
ML 125: Jupyter Notebook on a Mac M1 (10 extra)

Basic Data Types

VP 20: Arithmetic in Python (10 + 45 extra)
H 101-104: Binary Games (20 extra)
C 101.5 - 7: More Binary Games (15 extra)
VP 21: ASCII and Bytes in Python (10 + 25 extra)
VP 22: Lists and Dictionaries (15 + 10 extra)

General Projects

VP 23: Crib Drag (15 + 35 extra)
C 106: The Rho Method (30)
VP 24: Assembly Code (15 + 10 extra)
VP 25: Ship Navigation (15 + 10 extra)
VP 26: Bus Schedules (15 + 50 extra)
VP 27: Bitmask (15 + 15 extra)
VP 28: Conway's Game of Life (25 + 55 extra)
VP 29: Parsing Arithmetic (15 + 30 extra)
VP 30: Tiles (15 + 60 extra)
VP 31: Allergens (15 + 15 extra)
VP 32: Combat Game (15 + 40 extra)
VP 33: Mixing Cups (15 + 20 extra)
VP 34: Hexagonal Tiles (30 extra)
VP 35: Handshake (15 extra)
VP 36: Syntax Error (20 extra)
VP 37: Paths (30 extra)
VP 38: Flashing Fish (20 extra)
VP 39: Pressure (50 extra)
VP 40: Transparent Origami (20 extra)

AI Code Generation

ML 160: GitHub Copilot (15 extra)
ML 161: Codeium (15 extra)
ML 131: Generating Python Code with Gemini (40 extra)

Assembly-Level

ED 30: Linux Virtual Machine (15 extra)
ED 202: Linux Buffer Overflow Without Shellcode (115 extra)

Rust

R 10: Rust Basics, Overflows, & Injection (35 extra)
R 20: Dangling Pointers & Memory Leaks in Rust (35 extra)

Machine Learning

Understanding Prompts

ML 130: Prompt Injection (160 extra)

Awareness: Demonstrating Capabilities

ML 100: Machine Learning with TensorFlow (65 extra)
ML 101: Computer Vision (10 extra)
ML 102: Breaking a CAPTCHA (10 extra)
ML 103: Deblurring Images (40 extra)

Technical: Inner Components

ML 104: Analyzing Input Data (20 extra)
ML 105: Classification (25 extra)
ML 112: Support Vector Machines (40 extra)
ML 113: Decision Trees (15 extra)
ML 114: Ensemble Learning and Random Forests (15 extra)
ML 115: Dimensionality Reduction (20 extra)
ML 116: k-Means Clustering (30 extra)

Large Language Models

ML 120: Bloom LLM (30 extra)
ML 121: Prompt Engineering Concepts (20 pts extra)
ML 122: Comparing LLMs on Colab (20 extra)
ML 123: Running Llama 3 Locally (15 extra)
ML 124: Evaluating an LLM with Trulens (15 extra)
ML 126: Building RAGs (15 extra)
ML 127: Encoding Text with BERT (10 extra)
ML 128: Using AnythingLLM to Embed Custom Data (10 extra)
ML 129: Embedding Words with BERT (40 extra)

Attacks

ML 106: Data Poisoning (10 pts)
ML 107: Evasion Attack with SecML (15 pts + 25)
ML 108: Evasion Attack on MNIST dataset (20 pts + 20)
ML 109: Poisoning Labels with SecML (20 pts + 10)
ML 110: Poisoning by Gradients (15 pts + 15)
ML 111: Poisoning the MNIST dataset (20 pts + 20)

Last Updated: 12-19-25 7:37 am