CS50 AP Resources


Module Resource Resource Type
1-0: Pseudocode David's Lecture (Youtube) : 25:17-28:00 (Link) Videos
1-0: Pseudocode David's Lecture (MP4 Download) : 25:17-28:00 (Link) Videos
1-0: Pseudocode Pseudocode Written Resources (Link) Written Resources
1-0: Pseudocode Pseudocode Slides (Link) Slides
1-0: Pseudocode Why would we ever use pseudocode once we actually know how to code? What benefits does pseudocode provide that code perhaps doesn't? Thought Questions
1-0: Pseudocode What disadvantages are there to using pseudocode when preparing algorithms and solutions to problems? Thought Questions
1-0: Pseudocode Can every algorithm be expressed in pseudocode? Thought Questions
1-0: Pseudocode Does pseudocode always have to be written as text-based? How else might we use pseudocode in preparing solutions to problems? Thought Questions
1-0: Pseudocode Applied Logic: Lesson 1 The Programming Process (Link) External Resources
1-0: Pseudocode LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
1-0: Pseudocode LO 4.1.2 : Express an algorithm in a language. Learning Objectives
1-0: Pseudocode LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
1-1: Scratch David's Lecture (Youtube) : 45:47-1:15:23 (Link) Videos
1-1: Scratch Allison's Short (Youtube) (Link) Videos
1-1: Scratch David's Lecture (MP4 download) : 45:47-1:15:23 (Link) Videos
1-1: Scratch Allison's Short (MP4 download) (Link) Videos
1-1: Scratch Scratch Written Resources (Link) Written Resources
1-1: Scratch Scratch PowerPoint Slides (Link) Slides
1-1: Scratch Scratch Studios : The Scratch project galleries, now called "studios" are also full of cool projects that can be viewed and demonstrated during class. Take a look at a few that might interest your students and demo them, and possibly remix them to show how easy it is to make changes. Demonstration Ideas
1-1: Scratch Download and/or use Scratch (Link) External Resources
1-1: Scratch LO 1.2.1 : Create a computational artifact for creative expression. Learning Objectives
1-1: Scratch LO 1.2.2 : Create a computational artifact using computing tools and techniques to solve a problem. Learning Objectives
1-1: Scratch LO 1.2.3 : Create a new computational artifact by combining or modifying existing artifacts. Learning Objectives
1-1: Scratch LO 1.3.1 : Use computing tools and techniques for creative expression. Learning Objectives
1-1: Scratch LO 5.1.1 : Develop a program for creative expression, to satisfy personal curiosity, or to create new knowledge. Learning Objectives
1-1: Scratch LO 5.5.1 : Employ appropriate mathematical and logical concepts in programming. Learning Objectives
1-2: Syntax David's Lecture: Part 1 (Youtube) : 1:12 to 2:55 (Link) Videos
1-2: Syntax David's Lecture: Part 2 (Youtube) : 8:59 to 38:28 (Link) Videos
1-2: Syntax David's Lecture: Part 1 (MP4 download) : 1:12 to 2:55 (Link) Videos
1-2: Syntax David's Lecture: Part 2 (MP4 download) : 8:59 to 38:28 (Link) Videos
1-2: Syntax Syntax Written Resources (Link) Written Resources
1-2: Syntax Syntax PowerPoint Slides (Link) Slides
1-2: Syntax Slowly Fix Broken Code : A great thing to do, as David does in the lecture videos above, is to start with a simple but functional program and then add functionality to it but make syntax errors along the way, then slowly fix them, soliciting input from the class as to how to do so. Demonstration Ideas
1-2: Syntax Basic C Syntax (Link) External Resources
1-2: Syntax More C Syntax : Perhaps overwhelming. Think about bookmarking for later in the year! (Link) External Resources
1-2: Syntax C Language Specification (Link) External Resources
1-2: Syntax LO 2.2.2 : Use multiple levels of abstraction to write programs. Learning Objectives
1-3: Variables David's Lecture: Part 1 (Youtube) : 4:13 to 6:14 (Link) Videos
1-3: Variables Vipul's Short (Youtube) (Link) Videos
1-3: Variables Doug's Section (Youtube) (Link) Videos
1-3: Variables David's Lecture: Part 1 (MP4 Download) : 4:13 to 6:14 (Link) Videos
1-3: Variables Vipul's Short (MP4 Download) (Link) Videos
1-3: Variables Doug's Section (MP4 Download) (Link) Videos
1-3: Variables Variables Written Resources (Link) Written Resources
1-3: Variables Variables Slides (Link) Slides
1-3: Variables Why do we need variables? What would happen to our programs if we couldn't use variables. : Specific example: How would we write a program that adds two numbers together if we didn't have access variables? Thought Questions
1-3: Variables LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
1-3: Variables LO 2.2.2 : Use multiple levels of abstraction write programs Learning Objectives
1-4: Data Types David's Lecture: Part 1 (Youtube) : 28:36 to 38:28 (Link) Videos
1-4: Data Types Doug's Section (Youtube) (Link) Videos
1-4: Data Types David's Lecture: Part 1 (MP4 download) : 28:36 to 38:28 (Link) Videos
1-4: Data Types Doug's Section (MP4 Download) (Link) Videos
1-4: Data Types Data Types Written Resources (Link) Written Resources
1-4: Data Types Data Types Slides (Link) Slides
1-4: Data Types Why is C so inflexible with data types? : Hint: Consider its history relative to modern language Thought Questions
1-4: Data Types Imagine we don't have data types. What's 10 + "10"? Is it "1010" or "20" (strings) or 1010 or 20 (ints)? : NB: No right answer to this question in C! Thought Questions
1-4: Data Types In what situations would it be preferable to use a double versus a float, or a long long versus an int? (Or vice versa) : NB: We share this video later in the course, but if this question proves interesting, might be worth mentioning: https://www.youtube.com/watch?v=ecWNflDzFfA&start=2526&end=2663 Thought Questions
1-4: Data Types LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
1-4: Data Types LO 2.1.2 : Explain hos binary sequences are used to represent digital data. Learning Objectives
1-5: Operators LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
1-5: Operators LO 2.2.3 : Identify multiple levels of abstractions that are used when wtriting programs. Learning Objectives
1-5: Operators LO 5.2.1 : Explain how programs implement algorithms. Learning Objectives
1-6: Boolean Expressions and Conditionals David's Lecture: Part 1 (Youtube) : 6:14 to 7:28 (Link) Videos
1-6: Boolean Expressions and Conditionals Vipul's Short (Youtube) (Link) Videos
1-6: Boolean Expressions and Conditionals Sharon, Hannah, and Daven's Section (Youtube) : 46:33 to 57:31 (Link) Videos
1-6: Boolean Expressions and Conditionals Doug's Section (1) (Youtube) (Link) Videos
1-6: Boolean Expressions and Conditionals Doug's Section (2) (Youtube) (Link) Videos
1-6: Boolean Expressions and Conditionals David's Lecture: Part 1 (MP4 Download) : 6:14 to 7:28 (Link) Videos
1-6: Boolean Expressions and Conditionals Vipul's Short (MP4 Download) (Link) Videos
1-6: Boolean Expressions and Conditionals Sharon, Hannah, and Daven's Section (MP4 Download) : 46:33 to 57:31 (Link) Videos
1-6: Boolean Expressions and Conditionals Doug's Section (1) (MP4 Download) (Link) Videos
1-6: Boolean Expressions and Conditionals Doug's Section (2) (MP4 Download) (Link) Videos
1-6: Boolean Expressions and Conditionals Booleans Written Resources (Link) Written Resources
1-6: Boolean Expressions and Conditionals Booleans PowerPoint Slides (Link) Slides
1-6: Boolean Expressions and Conditionals CS50 Study Slides on Booleans (Link) Slides
1-6: Boolean Expressions and Conditionals Create Real-World Divisions : ex: positive vs negative numbers Demonstration Ideas
1-6: Boolean Expressions and Conditionals Code Examples : Found on cs50.tv (Link) Demonstration Ideas
1-6: Boolean Expressions and Conditionals What is a good sample use case for if-else? How about switch? When would you want to use ?:? Thought Questions
1-6: Boolean Expressions and Conditionals What does translating simple conditionals to pseudocode look like? Thought Questions
1-6: Boolean Expressions and Conditionals Why is it important that we be able to make decisions in our code? Thought Questions
1-6: Boolean Expressions and Conditionals Booleans Tutorial : Uses C++, but can be easily translated to C (Link) External Resources
1-6: Boolean Expressions and Conditionals Alex Allain Tutorial : Alex is a former CS50 Head Teaching Fellow! (Link) External Resources
1-6: Boolean Expressions and Conditionals LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
1-6: Boolean Expressions and Conditionals LO 2.2.3 : Identify multple levels of abstractions that are used when writing programs. Learning Objectives
1-6: Boolean Expressions and Conditionals LO 5.2.1 : Explain how programs implement algorithms. Learning Objectives
1-7: Loops David's Lecture (Youtube) : 2:58 to 4:13 (Link) Videos
1-7: Loops Tommy's Short (Youtube) (Link) Videos
1-7: Loops Doug's Section (Youtube) (Link) Videos
1-7: Loops David's Lecture (MP4 Download) : 2:58 to 4:13 (Link) Videos
1-7: Loops Tommy's Short (MP4 Download) (Link) Videos
1-7: Loops Doug's Section (MP4 Download) (Link) Videos
1-7: Loops Loops Written Resources (Link) Written Resources
1-7: Loops Loops PowerPoint Slides (Link) Slides
1-7: Loops CS50 Study on Loops (Link) Slides
1-7: Loops Code Examples : Can be found on cs50.tv (Link) Demonstration Ideas
1-7: Loops Why does C provide different types of loops? Thought Questions
1-7: Loops What does translating a loop to pseudocode look like? What about translating a loop to a flowchart? : This will likely result in a "go to line X" comparison. Note that while C does have a goto statement we do not teach it in CS50 AP and advise you avoid it as well. Use of goto is bad programming practice and has generally been considered such since the 1980s, as it can sometimes be used to jump out of a function, not allowing that function to complete its job. Thought Questions
1-7: Loops Alex Allain Tutorial : A former CS50 Head Teaching Fellow! (Link) External Resources
1-7: Loops The Geek Stuff Example : A bit long, but an excellent resource. (Link) External Resources
1-7: Loops LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
1-7: Loops LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
1-7: Loops LO 5.2.1 : Explain how programs implement algorithms. Learning Objectives
B-0: Abstraction and API David's Lecture: 1 (Youtube) : Abstraction at 18:45 (Link) Videos
B-0: Abstraction and API David's Lecture: 2 (Youtube) : Abstraction at 20:36 (Link) Videos
B-0: Abstraction and API David's Lecture: 1 (MP4 Download) : Abstraction at 18:45 (Link) Videos
B-0: Abstraction and API David's Lecture: 2 (MP4 Download) : Abstraction at 20:36 (Link) Videos
B-0: Abstraction and API Abstraction Written Resources (Link) Written Resources
B-0: Abstraction and API Abstraction PowerPoint Slides (Link) Slides
B-0: Abstraction and API Real Life Examples : Calculator, car, computer, etc. Demonstration Ideas
B-0: Abstraction and API Show Levels of Abstractions in a Program : Ex: students don't know how printf actually works, they just know how to use it. Demonstration Ideas
B-0: Abstraction and API Why do we use abstractions and why are they necessary? Thought Questions
B-0: Abstraction and API What are some real world level of abstractions? Thought Questions
B-0: Abstraction and API What is the highest level of abstraction that we can think of? : One example might be a website that creates a website for you - no programming is involved for the user. Thought Questions
B-0: Abstraction and API Can you think of a downfall of using abstractions? : When would it be better to use a "lower" level language, such as C, rather than a "higher" level language, such as Python? Thought Questions
B-0: Abstraction and API JavaPapers (Link) External Resources
B-0: Abstraction and API Read Write on API (Link) External Resources
B-0: Abstraction and API What is an API? (Link) External Resources
B-0: Abstraction and API LO 1.3.1 : Use computing tools and techniques for creative expression. Learning Objectives
B-0: Abstraction and API LO 2.2.1 : Develop an abstraction when writing a program or creating other computational artifacts. Learning Objectives
B-0: Abstraction and API LO 2.2.2 : Use multiple levels of abstraction to write programs. Learning Objectives
B-0: Abstraction and API LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
B-0: Abstraction and API LO 5.1.1 : Develop a program for creative expression, to satisfy personal curiosity, or to create new knowledge. Learning Objectives
B-0: Abstraction and API LO 5.3.1 : Use abstraction to manage complexity in programs. Learning Objectives
B-1: Data Compression David's Lecture (Youtube) : 38:12 to 43:55 (Link) Videos
B-1: Data Compression David's Lecture (MP4 download) : 38:12 to 43:55 (Link) Videos
B-1: Data Compression Data Compression Written Resources (Link) Written Resources
B-1: Data Compression Compress a folder : Show a physical representation of a compressed and an uncompressed folder. Demonstration Ideas
B-1: Data Compression How has data compression revolutionized technology? Thought Questions
B-1: Data Compression How does compression work? What's the difference between lossy and lossless compression? Thought Questions
B-1: Data Compression Imagine data compression didn't exist. How much information on your phone would you lose? For example, music? Thought Questions
B-1: Data Compression Do you think there are better compression algorithms that no one has discovered yet? : Is it necessary to discover better compression algorithms? Thought Questions
B-1: Data Compression Data Compression as Fast as Possible (Link) External Resources
B-1: Data Compression HowStuffWorks Data Compression (Link) External Resources
B-1: Data Compression Lossy vs. Lossless (Link) Thought Questions
B-1: Data Compression LO 3.1.1 : Use computers to process information, find patterns, and test hypotheses about digitally processed information to gain insight and knowledge. Learning Objectives
B-1: Data Compression LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
B-1: Data Compression LO 7.1.1 : Explain how computing innovations affect communication, interaction, and cognition. Learning Objectives
B-1: Data Compression LO 7.2.1 : Explain how computing has impacted innovations in other fields. Learning Objectives
B-2: Huffman Coding David's Lecture: 1 (Youtube) : 6:25 to 21:37 (Link) Videos
B-2: Huffman Coding David's Lecture: 2 (Youtube) : 102:27 to 116:02 (Link) Videos
B-2: Huffman Coding Nate's Section (Youtube) : Can double as a walkthrough for Problem B-1: Puff (Link) Videos
B-2: Huffman Coding David's Lecture: 1 (MP4 Download) : 6:25 to 21:37 (Link) Videos
B-2: Huffman Coding David's Lecture: 2 (MP4 Download) : 102:27 to 116:02 (Link) Videos
B-2: Huffman Coding Nate's Section (MP4 Download) : Can double as a walkthrough for Problem B-1: Puff (Link) Videos
B-2: Huffman Coding Huffman Coding Written Resources : Huffman Coding Section (Link) Written Resources
B-2: Huffman Coding CS50 Study on Huffman Coding (Link) Slides
B-2: Huffman Coding Huffman Code : Do a short Huffman Coding example in class! Demonstration Ideas
B-2: Huffman Coding Huffman vs. Morse : Compare Huffman coding to morse code, like David does in Lecture. Demonstration Ideas
B-2: Huffman Coding Do you think this is an efficient algorithm? Thought Questions
B-2: Huffman Coding Huffman coding is lossless because the message that was compressed must be decompressed back to the original message. Can you think of when we would use lossy data compression? Thought Questions
B-2: Huffman Coding Compression - Huffman Coding (Link) External Resources
B-2: Huffman Coding Principles of Huffman Coding : It is not necessary for students to know exactly how to code a Huffman coding in C, but rather should understand the principles of Huffman coding. (Link) External Resources
B-2: Huffman Coding LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
B-2: Huffman Coding LO 3.1.3 : Explain the insight and knowledge gained from digitally processed data by using appropriate visualizations, notations, and precise language. Learning Objectives
B-3: Scalability Calculator Comparison : Bring in a simple scientific calculator and a graphing calculator. Show that the graphing calculator is more scalable because it can handle a greater work load, so to speak, because a scientific calculator can only do simple mathematics: addition, subtraction, multiplication, division, simple trigonometry, etc. A graphing calculator, however, can do calculations that the scientific calculator cannot such as graphing equations, so we can say the graphing calculator is, in a sense, more scalable. Demonstration Ideas
B-3: Scalability Cards : Bring in a deck of cards. Ask a student to look for a specific card within 2 cards by flipping them over one at time. Then look for a card within 3 cards, etc. At what point does this become unreasonable? Demonstration Ideas
B-3: Scalability When is scalability important to consider? Thought Questions
B-3: Scalability Often times, programmers or designers do not take scalability into account when designing, but ends up being an important factor later on in time. Can you think of something in today's times where we do not consider scalability to be important, but in the future may have to? : Examples in the past include data systems, computers, programs assuming a 32-bit machine, etc. Thought Questions
B-3: Scalability David's video from CS75 : This class goes into much more detail than is needed for this course, but is a good reference for students who want to learn more about the subject. (Link) External Resources
B-3: Scalability Scalability Overview (Link) External Resources
B-3: Scalability LO 1.2.5 : Analyze the correctness, usability, functionality, and suitability of computational artifacts. Learning Objectives
B-3: Scalability LO 3.2.2 : Use large data sets to explore and discover information and knowledge. Learning Objectives
B-3: Scalability LO 7.1.2 : Explain how people participate in problem-solving process that scales. Learning Objectives
B-4: Collaboration Different Approaches : Use a problem submission from homework to show students how different people can have vastly different approaches to the same problem. Challenge students to give each other feedback on how their code could be more efficient or elegant. Demonstration Ideas
B-4: Collaboration Why is it important to work with others in a programming context? : Different people see different ways to solve problems, etc. Thought Questions
B-4: Collaboration Are there reasons to collaborate with others even when the assignment I'm given is easy and can be done by one person? Thought Questions
B-4: Collaboration Which pairs make the most effective pair programmers? For instance, with an expert and a novice pair, who should be the driver? Thought Questions
B-4: Collaboration LO 1.2.4 : Collaborate in the creation of computational artifacts. Learning Objectives
B-4: Collaboration LO 3.1.2 : Collaborate when processing information to gain insight and knowledge. Learning Objectives
B-4: Collaboration LO 5.1.3 : Collaborate to develop a program. Learning Objectives
B-4: Collaboration LO 6.2.1 : Explain characteristics of the Internet and the systems built on it. Learning Objectives
0-0: Computers and Computing What is a Computer? PowerPoint Slides (Link) Slides
0-0: Computers and Computing Computer or not a computer? : Bring in a variety of objects, some of which might be clearly considered a computer (e.g., a laptop), some of which are clearly not a computer (e.g., a phone book), and some of which might straddle that line (e.g., a set of chemical pool water testing strips, a smoke detector, an analog clock) Demonstration Ideas
0-0: Computers and Computing What characteristics define a computer? Thought Questions
0-0: Computers and Computing What is programming? Are there ways of "programming" a machine that do not involve writing code? Thought Questions
0-0: Computers and Computing What devices in your life are computers? Encourage your students to think outside the box. Things like phones, desktops, and laptops are computers. But what about things like microwaves, dishwashers, remote controls and cars? Thought Questions
0-0: Computers and Computing Wii U (Link) External Resources
0-0: Computers and Computing Apple Watch (Link) External Resources
0-0: Computers and Computing The Astounding Curta Mechanical Calculator (Link) External Resources
0-0: Computers and Computing Marble adding machine (Link) External Resources
0-0: Computers and Computing Sundials (Link) External Resources
0-0: Computers and Computing LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
0-0: Computers and Computing LO 3.1.1 : Use computers to process information, find patterns, and test hypotheses about digitally processed information to gain insight and knowledge. Learning Objectives
0-0: Computers and Computing What is Computing? PowerPoint Slides (Link) Slides
0-0: Computers and Computing The Phone Book Demonstration : The phone book demo has the benefit of being computational in nature, capable of getting at the wrong answer (using the "two-sies" approach), and also provides a basic intro to discussing analysis of algorithms. Demonstration Ideas
0-0: Computers and Computing What types of things do you compute every day? Thought Questions
0-0: Computers and Computing When you play board games, are you computing? What are you computing? Thought Questions
0-0: Computers and Computing Think specifically about passive computing. What types of things might you do that don't involve you actively using a computer, but still might be considered computing. Thought Questions
0-0: Computers and Computing Is it still considered computing if you get the wrong answer? What are the essential components of computing and computation? Thought Questions
0-0: Computers and Computing LO 4.1.2 : Express an algorithm in a language. Learning Objectives
0-0: Computers and Computing LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
6-6: Artificial Intelligence Scaz's Short: Introduction to AI (Youtube) (Link) Videos
0-1: How Computers Work Tommy's Lecture (Youtube) : 0:22 to 36:15 (Link) Videos
0-1: How Computers Work Tommy's Lecture (MP4 download) : 0:22 to 36:15 (Link) Videos
0-1: How Computers Work Notes Summary from Tommy's Lecture (Link) Written Resources
0-1: How Computers Work How Computers Work PowerPoint Slides (Link) Slides
0-1: How Computers Work Old computer! : Most schools have some extremely obsolete, non-functioning computer hiding somewhere in a storage closet. This is the time to harvest that computer for demo parts, and in particular for this one if you can carefully extract the motherboard and use it as a demo piece, it's an effective visual aid. Demonstration Ideas
0-1: How Computers Work What if we didn't have a BIOS? Or a CMOS? What would happen to our computers? Thought Questions
0-1: How Computers Work Why do you think the kernel is separate and distinct from the operating system in general? What would be some of the ramifications of removing that abstraction and letting the user tap into the kernel directly? Thought Questions
0-1: How Computers Work How a CPU Works : The creator of this video is very good at explaining basic components using the Scott CPU, but does put on screen a religious message at the end (after the cutoff point I've specified in the link and the widget), which is not to be considered an endorsement by CS50 AP. I incorrectly specified the stop point previously, and apologize if you used that video prior to this fix. (Link) External Resources
0-1: How Computers Work Logic Gates with Dominoes (Link) External Resources
0-1: How Computers Work LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
0-2: Bits and Bytes David's Lecture (Youtube) : 1:03:02 to 1:13:01 (Link) Videos
0-2: Bits and Bytes David's Lecture (MP4 download) : 1:03:02 to 1:13:01 (Link) Videos
0-2: Bits and Bytes Bits and Bytes PowerPoint Slides (Link) Slides
0-2: Bits and Bytes Visual Representation : from Katie O (Link) Teaching Tips
0-2: Bits and Bytes Describe the amount of data that various units of storage can convey : 1 bit -- Yes or no; true or false; on or off. 1 byte = 8 bits -- A single letter 1 kilobyte = 1,000 or 1,024 bytes -- A few paragraphs 1 megabyte = 1,000 or 1,024 kilobytes -- 1 minute worth of an MP3; an average novel 1 gigabyte = 1,000 or 1,024 megabytes -- About 30 minutes of an HD movie 1 terabyte = 1,000 or 1,024 gigabytes -- The first 16 seasons of The Simpsons Demonstration Ideas
0-2: Bits and Bytes Describe the physical size various units of storage might take up, all things being equal. For example, if a single bit were about the size of a single marble filled with water : 1 bit -- a marble full of water 1 byte -- 1/8 cup water 1 kilobyte -- 9 gallons of water 1 megabyte -- an above ground swimming pool full of water 1 gigabyte -- a football field sized-pool of water, three feet deep 1 terabyte -- a football field sized-pool of water, half a mile deep Demonstration Ideas
0-2: Bits and Bytes Old Tech : If you can find them, busting up some old technology is always fun! A 3.5" floppy disk can easily be broken apart and the actual disk can be passed around to students. That only could store 1.44MB of data. If you have (or can find) a MicroSD card (which you probably can't break open!), some of those are currently capable of storing 128 GB. A floppy disk is 8100 mm² in size (178 bytes/mm²). A MicroSD card is 165mm² (775,757,576 bytes/mm²). That means that modern data storage technology is at least 4,382,812 times more space-efficient than it was when the standard-sized floppy disk was invented in 1986. Demonstration Ideas
0-2: Bits and Bytes LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
0-2: Bits and Bytes LO 2.1.2 : Explain how binary sequences are used to represent digital data. Learning Objectives
0-3: Hardware David's Lecture: Part 1 (Youtube) : 3:48 to 57:11 (Link) Videos
0-3: Hardware David's Lecture: Part 2 (Youtube) : 1:06:00 to 1:38:06 (Link) Videos
0-3: Hardware David's Lecture (MP4 download) : 3:48 to 57:11 and 1:06:00 to 1:38:06 (Link) Videos
0-3: Hardware Hardware Slides (Link) Slides
0-3: Hardware Katie O'Shauhnessey : I asked the Tech Support Team at my school if we could come visit them in their space near the server room. I found that they were very excited to share some technical details about their work at the school with students, and the students were equally excited to have the chance to look at the actual servers and other innards of the school's network. Teaching Tips
0-3: Hardware Tech Shopping : The demonstration of going tech shopping in this video is definitely out of date, but compelling nonetheless. You may wish to recreate it for your students using today's Apple, Lenovo, Dell, or other computer company's website. Demonstration Ideas
0-3: Hardware Old devices : As in a prior module, if you have any devices, particularly older/obsolete devices, that you might be able to destroy or break apart to show the inner workings, the visual appeal of that is hard to deny. Demonstration Ideas
0-3: Hardware Why has USB become such a ubiquitous standard? Relatedly, why might Apple and other organizations want to avoid using those standard ports? Thought Questions
0-3: Hardware Are there ever any reasons to prioritize owning an HDD over an SSD? Thought Questions
0-3: Hardware HDD vs. SSD (Link) External Resources
0-4: Memory David's Lecture (Youtube) : 1:25:56 to 1:37:40 (Link) Videos
0-4: Memory David's Lecture (MP4 download) : 1:25:56 to 1:37:40 (Link) Videos
0-4: Memory Memory PowerPoint Slides (Link) Slides
0-4: Memory Hourglass : Use an hourglass as an example of a CPU's memory bottleneck. Demonstration Ideas
0-4: Memory Restaurant Kitchen Analogy : The CPU (processor) is the chef who actually prepares the food. The faster the chef, the faster the food is ready. A multi-core CPU means having multiple chefs. Important to note: The chef can only ever do one thing at a time. He can switch between things, but can only have ever have one focus. RAM is the counter-top space accessible to the chef. He can easily reach everything on the counter, but the storage space is limited. If you start to fill the counter space with ingredients, it eliminates prep space for the chef, meaning some stuff might need to be temporarily put away (virtual memory paging) and then brought back. HDD is the cupboard and fridge. They hold ingredients until the chef needs them, and also hold things when the chef is done working with them. You and your friends are the users. If you order lots of food, or you have a slow chef, or the kitchen doesn't have enough counter-top space, things might take a while, negatively impacting your experience, and possibly causing you to leave a bad Yelp review. (Link) Demonstration Ideas
0-4: Memory (Before watching the videos): How much memory does your computer have? : After answering: Why are some numbers wildly varying? (Hopefully some students quote RAM size, others HDD) Thought Questions
0-4: Memory Why do you think RAM costs more than HDD space? Thought Questions
0-4: Memory Why are there so many different "levels" of memory? Thought Questions
0-4: Memory LO 2.2.3 : Identify multiple levels of abstractions that are used when wtriting programs. Learning Objectives
0-5: Binary David's Lecture (Youtube) : 3:37 to 12:05 (Link) Videos
0-5: Binary Nate's Short (Youtube) (Link) Videos
0-5: Binary David's Lecture (MP4 download) : 3:37 to 12:05 (Link) Videos
0-5: Binary Nate's Short (MP4 download) (Link) Videos
0-5: Binary Binary Written Resources (Link) Written Resources
0-5: Binary Binary PowerPoint Slides (Link) Slides
0-5: Binary CS50 Study on Binary (Link) Slides
0-5: Binary Mary Kelly : This binary game from Cisco is a fun activity to practice with: Cisco Binary Game (Link) Teaching Tips
0-5: Binary Mackenzie Schultz : I really enjoyed the activity we did for binary. Here is the presentation I used and here's an overview of the lesson plan: Begin class with a brief overview of how the decimal system works (~5-10 minutes) Challenge students to write the decimal numbers 0-20 in binary without explaining binary Give students 3 minutes of individual think time regarding the challenge Have students work collaboratively in groups of four to tackle the challenge (~20 minutes) Let all students know ahead of time that you will randomly select one of them to write out a few of the binary numbers they came up with and describe the system they used to determine how binary works Randomly select a student to go up to the board to demonstrate what their group developed. For this, I stepped away from the conversation and let the student at the board facilitate the conversation with the class (~10 minutes) Briefly wrap-up the discussion and provide an explanation of binary (~10 minutes) My thoughts on the experience: I expected students to figure out how binary worked a lot faster than they did which was great because it gave them experience with being frustrated with a problem, persevering, and then figuring out a solution. If I were to do this again, I would allow a lot of time for the student group work time, and I would help them far less than I did. I definitely lead some of the groups to the answer because they were desperate for help, but if I had given them more time to grapple with the challenge, they would have gotten there without me. My advice? Be comfortable with them being mad at you at the beginning because they'll love you at the end! (Link) Teaching Tips
0-5: Binary Binary Bulbs : A rig like ours may be tough to make, but simple floor lamps (as were used during the demo of this at the Redmond bootcamp) or some battery-powered sticky touch lights mounted to a plank of wood (perhaps chalkboard-painted, so place values can be erased) are equally as useful pedagogically, if perhaps slightly less technologically impressive. If you mount the sticky lights on a plank of wood (and you have at least 9 lights on it), you can mount it in your classroom and repurpose it as a binary calendar -- four lights for the month (1-12), and five lights for the day (1-31). Have a "standard edition" assignment where students are asked to make a binary number using the lights with place values listed, and a "Hacker edition" where they must figure out the place values in their head. (Link) Demonstration Ideas
0-5: Binary If I have four binary bulbs (8s/4s/2s/1s places), how do I represent the number 0? 6? 11? What about 16? : How can I resolve this? Thought Questions
0-5: Binary Are base-2 and base-10 the only possible number systems? What would a base-3 system look like? How would I represent the number 50 in base-3? What about in base-8? In base-16? : NOTE: Base-8 (octal) and base-16 (hexadecimal) will pop up again later in the course. In particular, how do you represent the "digits" for ten, eleven, twelve, thirteen, fourteen, fifteen? Thought Questions
0-5: Binary NumberMonk (Link) External Resources
0-5: Binary Khan Academy on Binary (Link) External Resources
0-5: Binary LO 2.1.2 : Explain how binary sequences are used to represent digital data. Learning Objectives
0-6: ASCII David's Lecture (Youtube) : 12:05 to 13:53 (Link) Videos
0-6: ASCII Nate's Short (Youtube) (Link) Videos
0-6: ASCII David's Lecture (MP4 download) : 12:05 to 13:53 (Link) Videos
0-6: ASCII Nate's Short (MP4 download) (Link) Videos
0-6: ASCII ASCII PowerPoint Slides (Link) Slides
0-6: ASCII CS50 Study on ASCII (Link) Slides
0-6: ASCII Lisa Standring : I showed this video to a class of high school boys. It is childlike but was well-received. (Link) Teaching Tips
0-6: ASCII Discuss ASCII : Discuss the ASCII table, in particular some of the patterns in it. Demonstration Ideas
0-6: ASCII Crack the code : Write a secret message on the board in binary. Challenge students to crack the code Demonstration Ideas
0-6: ASCII Messages : Have students write short (10-character max) messages. Demonstration Ideas
0-6: ASCII Why do we need ASCII at all? What problems might we face if we didn't have it? Thought Questions
0-6: ASCII Can you write your name in binary/decimal using ASCII number codes? : If everyone in the class can write their name, who might not be able to write their name in ASCII? What does that tell us? Thought Questions
0-6: ASCII ASCII was written as a 7-bit encoding scheme, but bytes are 8 bits. Why do you think that is? What do you think that might mean about other historical standards? : A byte was not actually standardized as 8 bits until the 1990s! ASCII was written in 1963. Thought Questions
0-6: ASCII In most of our messages, are we using all of the characters in the ASCII table? : This should hopefully get students thinking about data compression, a topic we'll revisit much later in the course. Thought Questions
0-6: ASCII ASCII chart with bit patterns (Link) External Resources
0-6: ASCII ASCII chart with decimal, binary, octal and hex (Link) External Resources
0-6: ASCII LO 2.1.1 : Explain the variety of abstractions used to represent data. Learning Objectives
0-6: ASCII LO 2.1.2 : Explain how binary sequences are used to represent digital data. Learning Objectives
0-7: Algorithms David's Lecture (Youtube) : 15:33 to 30:55 (Link) Videos
0-7: Algorithms David's Lecture (MP4 Download) : 15:33 to 30:55 (Link) Videos
0-7: Algorithms Algorithms Written Resources (Link) Written Resources
0-7: Algorithms Algorithms PowerPoint Slides (Link) Slides
0-7: Algorithms PB&J : The sandwich-maker should interpret the recommended steps for making the PB&J as literally as possible, and do her best to not make assumptions. 100% of the time, you will fail in actually getting a sandwich made. Stop around 15-20 steps, as things have usually degraded by this point and the importance of precision in defining algorithmic steps has been conveyed. Demonstration Ideas
0-7: Algorithms Phone Book : One page at a time. Does this algorithm work? Yes. Is it correct? Yes. How long does it take? n, where n is the number of pages. Two pages at a time. Does this algorithm work? Yes. Is it correct? No. (Hopefully one of your students will say that!) How long does it take? n/2, where n is the number of pages. Why isn't it correct? We haven't been precise enough. What if Mike Smith is on the page between two pages? Binary search. Cut the problem in half. Does this algorithm work? Yes. Is it correct? Yes. How long does it take? log(n), where n is the number of pages. Students needn't understand logarithms in depth to take this course. In CS50, whenever we use log(n), the implied base is 2, meaning that the logarithm of a number essentially boils down to the question: How many times can I divide by 2 before I get to a number less than or equal to 1? Demonstration Ideas
0-7: Algorithms Write an Everyday Algorithm : Have students write an algorithm for completing some task they do every day. Have students submit their algorithms to you during class. If an interesting one comes up, ask two other students to volunteer. Have one follow the algorithm while the other is out of the room. Then have the second come in and execute the algorithm. Did the two executions play out identically? Demonstration Ideas
0-7: Algorithms Adding 1 -> 100 : Give students 30 seconds to sum up all the numbers from 1 to 100, in their heads. (The answer is 5050). Could anyone do it? Have students explain their algorithmic approaches. (A possible 30-second implementation is recognizing that there are 50 pairs of numbers that add up to 101: 1 + 100, 2 + 99, ... 50 + 51.) Demonstration Ideas
0-7: Algorithms Guess a Number Widget : Have students use Khan Academy's Guess a Number Widget (embedded below) and voice their thought processes out loud. This is the same concept as the phone book demo, so can be used to introduce or reinforce. (Link) Demonstration Ideas
0-7: Algorithms What's an algorithm? (Link) External Resources
0-7: Algorithms The Friendship Algorithm (Link) External Resources
0-7: Algorithms LO 4.1.2 : Express an algorithm in a language. Learning Objectives
0-7: Algorithms LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correcness and clarity. Learning Objectives
2-0: Compiling David's Lecture: Part 1 (Youtube) : 10:23 to 13:20 (Link) Videos
2-0: Compiling David's Lecture: Part 2 (Youtube) : 18:37 to 28:33 (Link) Videos
2-0: Compiling Rob's Short (Youtube) (Link) Videos
2-0: Compiling David's Lecture: Part 1 (MP4 Download) : 10:23 to 13:20 (Link) Videos
2-0: Compiling David's Lecture: Part 2 (MP4 Download) : 18:37 to 28:33 (Link) Videos
2-0: Compiling Rob's Short (MP4 Download) (Link) Videos
2-0: Compiling Lecture Notes (Link) Written Resources
2-0: Compiling Compiling PowerPoint Slides (Link) Slides
2-0: Compiling Reverse Engineering : If you have a group of more Hacker minded students who might have seen some assembly code previously, giving them a short program in assembly and tasking them with "reserve engineering" it based on what they think the underlying C looks like could be a fun challenge. Demonstration Ideas
2-0: Compiling If we have to go through all the trouble of this compilation process, why do we write in higher level languages like C? Thought Questions
2-0: Compiling Did you think that C's toolkit was already pretty limited? What do you think about the size of that toolkit now that you know how limited the number of instructions there are in assembly language is? Thought Questions
2-0: Compiling Comparing C to Machine Language : This video is a pretty cool side by side of C code and assembly code, showing the translation/simplification that compiling achieves. The language can get a bit heavy, but still pretty interesting! (Link) External Resources
2-0: Compiling LO 2.1.1 : Descirbe the variet of abstractions used to represent data. Learning Objectives
2-0: Compiling LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
2-1: Functions David's Lecture: Part 1 (Youtube) : 1:41:45 to 2:03:03 (Link) Videos
2-1: Functions Allison's Section (Youtube) : 36:57 to 51:01 (Link) Videos
2-1: Functions Nate's Short (Youtube) (Link) Videos
2-1: Functions Chris's Short (Youtube) (Link) Videos
2-1: Functions Doug's Section (Youtube) (Link) Videos
2-1: Functions David's Lecture: Part 1 (MP4 Download) : 1:41:45 to 2:03:03 (Link) Videos
2-1: Functions Allison's Section (MP4 Download) : 36:57 to 51:01 (Link) Videos
2-1: Functions Nate's Short (MP4 Download) (Link) Videos
2-1: Functions Chris's Short (MP4 Download) (Link) Videos
2-1: Functions Doug's Section (MP4 Download) (Link) Videos
2-1: Functions Lecture Notes (Link) Written Resources
2-1: Functions CS50 Study Page (Link) Written Resources
2-1: Functions Functions PowerPoint Slides (Link) Slides
2-1: Functions Role Play : One demonstration that I frequently do in my sections is to have students play the role of various functions, using pieces of paper as the "variables" they pass back and forth, to illustrate the notion of parameters, return values, and scope. Demonstration Ideas
2-1: Functions Error Checking : Have students experiment with writing functions without declaring them and trying to compile their program, just to become familiar with some of the compiler errors that might get thrown. Demonstration Ideas
2-1: Functions Are functions necessary? Are functions optimal? Thought Questions
2-1: Functions What are some of the conveniences provided by functions? What are some of the inconveniences? Thought Questions
2-1: Functions What are some of the conveniences of passing copies of variables as arguments to functions? Would it be better to pass the actual variable, or worse? Thought Questions
2-1: Functions What are some problems with local and global variable scope, an implication of functions? Thought Questions
2-1: Functions If functions were not something we were able to work with in our programs, how might that change your coding strategy? More importantly, how might it impact your debugging strategy? Thought Questions
2-1: Functions LO 2.2.1 : Develop and abstraction when writing a program or creating other computational artifacts. Learning Objectives
2-1: Functions LO 2.2.2 : Use multiple levels of abstraction to write programs Learning Objectives
2-1: Functions LO 2.2.3 : Identify multiple levels of abstraction that are used when writing programs Learning Objectives
2-1: Functions LO 5.2.1 : Explain how programs implement algorithms Learning Objectives
2-1: Functions LO 5.3.1 : Use abstraction to manage complexity in programs Learning Objectives
2-2: Arrays and Strings David's Lecture: Part 1 (Youtube) : 7:28 to 8:55 (Link) Videos
2-2: Arrays and Strings David's Lecture: Part 2 (Youtube) : 2:05 to 3:55 (Link) Videos
2-2: Arrays and Strings Allison's Section (Youtube) : 16:34 to 36:07 (Link) Videos
2-2: Arrays and Strings Rob's Short (Youtube) (Link) Videos
2-2: Arrays and Strings Christopher's Short (Youtube) (Link) Videos
2-2: Arrays and Strings Doug's Section (Youtube) (Link) Videos
2-2: Arrays and Strings David's Lecture: Part 1 (MP4 Download) : 7:28 to 8:55 (Link) Videos
2-2: Arrays and Strings David's Lecture: Part 2 (MP4 Download) : 2:05 to 3:55 (Link) Videos
2-2: Arrays and Strings Allison's Section (MP4 Download) : 16:34 to 36:07 (Link) Videos
2-2: Arrays and Strings Rob's Short (MP4 Download) (Link) Videos
2-2: Arrays and Strings Christopher's Short (MP4 Download) (Link) Videos
2-2: Arrays and Strings Doug's Section (MP4 Download) (Link) Videos
2-2: Arrays and Strings Lecture Notes (Part 1) (Link) Written Resources
2-2: Arrays and Strings Lecture Notes (Part 2) (Link) Written Resources
2-2: Arrays and Strings Arrays and Strings PowerPoint Slides (Link) Slides
2-2: Arrays and Strings CS50 Study Page (Link) Slides
2-2: Arrays and Strings Boxes : Connecting arrays by way of analogy to post office boxes may be helpful. An array is a chunk of memory, as a mail bank is a chunk of space on the wall Arrays have been divided into identically-sized blocks called elements, as a mail bank has been divided into identically-sized blocks called P.O. boxes Each element can hold a certain amount of data, as each P.O. box can hold a certain amount of mail That data is of the same data type, such as int, as the mail is all of the same type, such as letters Lastly, each element of an array can be accessed directly by index number, as each P.O. box can be accessed directly by mailbox number Demonstration Ideas
2-2: Arrays and Strings Games! : Students are pretty familiar with arrays from a variety of games that might be worth playing by mocking up on the board Battleship Tic Tac Toe Wheel of Fortune (actually particularly apt for strings/arrays of characters) Demonstration Ideas
2-2: Arrays and Strings Multiplication : Use arrays to define a multiplication table, to give some exposure to multi-dimensional arrays. Demonstration Ideas
2-2: Arrays and Strings Is there ever a situation where it might be better to have 2, 3, or n separate variables instead of having a 2-, 3-, or n-element array? Thought Questions
2-2: Arrays and Strings Because we have to specify the size of an array before we start using it, how might we respond to needing extra elements? Thought Questions
2-2: Arrays and Strings What if we need to insert an element between two other elements we've already defined in our array? : Teacher note: More on this when we get to sorting algorithms! Thought Questions
2-2: Arrays and Strings If we don't otherwise know the number of elements in an array, how might we be able to calculate it? What other information do we need to know in order to do so? Thought Questions
2-2: Arrays and Strings Doug's Arrays Videos : Doug's video on arrays (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
2-2: Arrays and Strings LO 2.1.1 : Describe the variety of abstractions used to represent data Learning Objectives
2-2: Arrays and Strings LO 2.2.3 : Identify multiple levels of abstraction that are used when writing programs Learning Objectives
2-3: Command-Line Interaction David's Lecture: Part 1 (Youtube) : 1:25:10 to 1:46:37 (Link) Videos
2-3: Command-Line Interaction Allison's Section (Youtube) : 51:02 to 54:22 (Link) Videos
2-3: Command-Line Interaction Christopher's Short (Youtube) (Link) Videos
2-3: Command-Line Interaction Doug's Section (Youtube) (Link) Videos
2-3: Command-Line Interaction Doug's Section 2 (Youtube) (Link) Videos
2-3: Command-Line Interaction David's Lecture: Part 1 (MP4 Download) : 1:25:10 to 1:46:37 (Link) Videos
2-3: Command-Line Interaction Allison's Section (MP4 Download) : 51:02 to 54:22 (Link) Videos
2-3: Command-Line Interaction Christopher's Short (MP4 Download) (Link) Videos
2-3: Command-Line Interaction Doug's Section (MP4 Download) (Link) Videos
2-3: Command-Line Interaction Dougs Section 2 (MP4 Download) (Link) Videos
2-3: Command-Line Interaction Lecture Notes (Link) Written Resources
2-3: Command-Line Interaction Command Line Interaction PowerPoint Slides (Link) Slides
2-3: Command-Line Interaction Allison's Slides : 30 to 31 (Link) Slides
2-3: Command-Line Interaction CS50 Study Page (Link) Slides
2-3: Command-Line Interaction Mario 2.0 : Change early programs, like mario, to take their input via the command line. Demonstration Ideas
2-3: Command-Line Interaction What is the relationship between argc and argv? Specifically, what does argc tell us about how far we can iterate through argv? Thought Questions
2-3: Command-Line Interaction What is the data type of argv? : What is the data type of the elements of argv? What does that mean if the user inputs, say, "18" or "5.22" at the command line? Thought Questions
2-3: Command-Line Interaction Why might we want to collect information at the command line instead of after the program has started running? Thought Questions
2-3: Command-Line Interaction Codecademy video (Link) External Resources
2-3: Command-Line Interaction Doug's Command Line Argument Video : Doug's video on command line arguments (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
2-3: Command-Line Interaction LO 5.5.1 : Employ appropriate mathematical and logical concepts in programming Learning Objectives
2-4: Exit Codes David's Lecture (Youtube) : 1:42:46 to 1:46:37 (Link) Videos
2-4: Exit Codes David's Lecture (MP4 Download) : 1:42:46 to 1:46:37 (Link) Videos
2-4: Exit Codes Exit Codes PowerPoint Slides (Link) Slides
2-4: Exit Codes What is the value of exit codes? Thought Questions
2-4: Exit Codes If we don't specify an exit code value (as likely hasn't happened much), what happens? Thought Questions
2-4: Exit Codes Given the purpose of exit codes, why do you think we use 0 (which normally means false in C) to indicate a successful program conclusion, but non-zero (specifically and most frequently 1) to indicate a failure? Thought Questions
2-4: Exit Codes LO 2.2.2 : Use multiple levels of abstraction to write programs Learning Objectives
2-4: Exit Codes LO 5.5.1 : Employ appropriate mathematical and logical concepts in programming. Learning Objectives
2-5: Libraries David's Lecture (Youtube) : 1:02:39 to 01:17:39 (Link) Videos
2-5: Libraries Nate's Short (Youtube) (Link) Videos
2-5: Libraries David's Lecture (MP4 Download) : 1:02:39 to 01:17:39 (Link) Videos
2-5: Libraries Nate's Short (MP4 Download) (Link) Videos
2-5: Libraries Lecture Notes (Link) Written Resources
2-5: Libraries Libraries PowerPoint Slides (Link) Slides
2-5: Libraries Have students look at the libraries in their IDE. : Encourage students to poke around their IDE to have a look at the contents of the C standard library files, so they know what functions they have available to them. Knowledge is power! To do this, students must first cd /usr/include. Then, they may type less <header file>, e.g. less stdio.h or less cs50.h, they can then scroll up and down in the terminal window to see the contents. So as to prevent accidental overwrites, the header files cannot be opened in Ace. Type q to exit the less command and return to the terminal prompt. To return to their workspaces, students can type cd ~/workspace. Demonstration Ideas
2-5: Libraries Look up Libraries (Link) Demonstration Ideas
2-5: Libraries What are some of the advantages of writing libraries? Thought Questions
2-5: Libraries What motivations do people have for writing libraries? Put more concretely: Why would someone write printf() so we can all can now use it? Thought Questions
2-5: Libraries Why, when writing libraries, are the .c files kept separate from the .h files? Thought Questions
2-5: Libraries Are there any abstractions that you use everyday? Thought Questions
2-5: Libraries LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
2-5: Libraries LO 2.2.1 : Develop an abstraction when writing a program or creating other computational artifacts Learning Objectives
2-5: Libraries LO 2.2.2 : Use multiple levels of abstraction to write programs Learning Objectives
2-5: Libraries LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
2-6: Typecasting David's Lecture (Youtube) : 1:01:19 to 1:09:07 (Link) Videos
2-6: Typecasting Jordan's Short (Youtube) (Link) Videos
2-6: Typecasting David's Lecture (MP4 Download) : 1:01:19 to 1:09:07 (Link) Videos
2-6: Typecasting Jordan's Short (MP4 Download) (Link) Videos
2-6: Typecasting Lecture Notes (Link) Written Resources
2-6: Typecasting Typecasting PowerPoint Slides (Link) Slides
2-6: Typecasting Why is it perhaps "better" to typecast a variable instead of creating a second variable of the correct type? Thought Questions
2-6: Typecasting When might it be preferable to create that second variable instead of typecasting it? Thought Questions
2-7: Bugs and Debugging David's Lecture (Youtube) : 4:34 to 31:46 (Link) Videos
2-7: Bugs and Debugging Nate's Short (Youtube) (Link) Videos
2-7: Bugs and Debugging Dan's Short (Youtube) (Link) Videos
2-7: Bugs and Debugging Doug's Section (Youtube) (Link) Videos
2-7: Bugs and Debugging David's Lecture: Part 1 (MP4 Download) : 4:34 to 31:46 (Link) Videos
2-7: Bugs and Debugging Nate's Short (MP4 Download) (Link) Videos
2-7: Bugs and Debugging Dan's Short (MP4 Download) (Link) Videos
2-7: Bugs and Debugging Doug's Section (MP4 Download) (Link) Videos
2-7: Bugs and Debugging Lecture Notes (Link) Written Resources
2-7: Bugs and Debugging Bugs and Debugging PowerPoint Slides (Link) Slides
2-7: Bugs and Debugging Buggy Code : One of the best things to do here, honestly, is to find buggy code on the internet. There are tons and tons of websites hosting deliberately buggy C code for exercises involving "spot the bug," and it's a great way to fill a class period. Demonstration Ideas
2-7: Bugs and Debugging Buggy Quiz Code : Similarly, many of our old quiz questions, available on cs50.tv, contain deliberately buggy code and challenge students to spot the bug. Being able to spot these things makes it much less likely that students will replicate these bugs in their own code during problem-solving. Demonstration Ideas
2-7: Bugs and Debugging GDB is noticeably more complex than simply writing printf statements in our code. Why should we bother using it? What advantages and/or disadvantages exist there? Thought Questions
2-7: Bugs and Debugging What types of bugs/logical errors seem particularly easy to make? Thought Questions
2-7: Bugs and Debugging What other kinds of bugs are there besides logical bugs? (Bugs where your program works, but doesn't have the desired effect?) Thought Questions
2-7: Bugs and Debugging What types of bugs have you encountered in terms of compiler messages you don't understand? Have students share their experiences dealing with syntax bugs and other types of bugs and share debugging strategies and techniques. This discussion could prove quite fruitful and may really help students who simply throw up their hands when the counter a problem they don't know how to deal with. Thought Questions
2-7: Bugs and Debugging UC Berekely page. (Link) External Resources
2-7: Bugs and Debugging LO 1.2.5 : Analyse the correcness, usability , functionality, and suitability of computational artifacts. Learning Objectives
2-7: Bugs and Debugging LO 4.2.4 : Evaluate algorithms anlytically and empirically for efficiency, correcntess, and clarity. Learning Objectives
2-7: Bugs and Debugging LO 5.1.2 : Develop a correct program to sovle problems Learning Objectives
2-7: Bugs and Debugging LO 5.4.1 : Evaluate the correctness of a program. Learning Objectives
4-0: Principles of Good Design In more general terms, what is good design? What makes a product have good design? Thought Questions
4-0: Principles of Good Design Can you compare two products where one has better design than the other (such as a Samsung phone and an iPhone)? Thought Questions
4-0: Principles of Good Design Why is good design important? : It may be obvious for why physical products need to have good design (e.g. for better appearance), but why is it important for a program to have good design? Thought Questions
4-0: Principles of Good Design What is good software design? (Link) External Resources
4-0: Principles of Good Design Some Design Principles : Though these principles may seem more for physical products, these principles can be applied to programming since aesthetics and such are also important in web development and when software and hardware interact. (Link) External Resources
4-0: Principles of Good Design LO 1.2.5 : Analyze the correctness, usability, functionality and suitability of computational artifacts. Learning Objectives
4-1: ncurses ncurses PowerPoint Slides (Link) Slides
4-1: ncurses Night Mode : Show your students how to turn on Night Mode! Demonstration Ideas
4-1: ncurses Sample code - hello.c (Link) Demonstration Ideas
4-1: ncurses Sample code - diagonals.c (Link) Demonstration Ideas
4-1: ncurses Sample code - colors.c (Link) Demonstration Ideas
4-1: ncurses The Complete ncurses Reference Guide (Link) External Resources
4-2: Structures and Encapsulation David's Lecture (Youtube) : 9:51 to 15:02 (Link) Videos
4-2: Structures and Encapsulation Rob's Short (Youtube) (Link) Videos
4-2: Structures and Encapsulation Doug's Section (Youtube) (Link) Videos
4-2: Structures and Encapsulation Doug's Section 2 (Youtube) (Link) Videos
4-2: Structures and Encapsulation David's Lecture (MP4 Download) : 9:51 to 15:02 (Link) Videos
4-2: Structures and Encapsulation Rob's Short (MP4 Download) (Link) Videos
4-2: Structures and Encapsulation Doug's Section (MP4 Download) (Link) Videos
4-2: Structures and Encapsulation Doug's Section (MP4 Download) (Link) Videos
4-2: Structures and Encapsulation Lecture Notes (Link) Written Resources
4-2: Structures and Encapsulation Structures PowerPoint Slides (Link) Slides
4-2: Structures and Encapsulation Stucts Code Examples : Start with the files found here! (Link) Demonstration Ideas
4-2: Structures and Encapsulation We've already seen arrays as colelctions of information. In which ways are structures different? Thought Questions
4-2: Structures and Encapsulation What might the advantage be of having a struct in the first place, from a design perspective? Thought Questions
4-2: Structures and Encapsulation Why do we sometimes term the process of creating a structure as abstraction or encapsulation? Thought Questions
4-2: Structures and Encapsulation LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
4-2: Structures and Encapsulation LO 2.2.1 : Develop an abstraction when writing a program or creating other computational artifacts. Learning Objectives
4-2: Structures and Encapsulation LO 2.2.2 : Use multiple levels of abstractions to write programs. Learning Objectives
4-2: Structures and Encapsulation LO 2.2.3 : Identify multiple levels of abstractions that are used when writing programs. Learning Objectives
4-3: Recursion David's Lecture (Youtube) : 24:52 to 37:22 (Link) Videos
4-3: Recursion Zamyla's Short (Youtube) (Link) Videos
4-3: Recursion Doug's Section (Youtube) (Link) Videos
4-3: Recursion David's Lecture (MP4 Download) : 24:52 to 37:22 (Link) Videos
4-3: Recursion Zamyla's Short (MP4 Download) (Link) Videos
4-3: Recursion Doug's Section (MP4 Download) (Link) Videos
4-3: Recursion Lecture Notes (Link) Written Resources
4-3: Recursion CS50 Study Page on Recursion (Link) Written Resources
4-3: Recursion Recursion PowerPoint Slides (Link) Slides
4-3: Recursion Switch to Recursion : Change iterative based solutions (like sigma or factorial) to recrusive implementations. Demonstration Ideas
4-3: Recursion Pass the Candy : Pass The Candy might be interesting and thought-provoking, if students are then challenged to actually implement the recursive procedure underpinning the game.https://www.youtube.com/watch?v=eiJ5-gUsNEQ (Link) Demonstration Ideas
4-3: Recursion Why use recursion at all when you could use loops instead? Thought Questions
4-3: Recursion How would you implement a program that counts from 1 to 10, printing out each number, without using loops? Thought Questions
4-3: Recursion Where are some places where you see recursion in the real world, or where do you see the possibility of using recursion to help you solve some problem in your daily life? Thought Questions
4-3: Recursion Khan Academy Recursive Algorithms (Link) External Resources
4-3: Recursion LO 4.2.4 : Evaluate algorithms analytically and empirically, for efficiency, correctness, and clarity. Learning Objectives
4-4: Merge Sort David's Lecture (Youtube) : 17:54 to 24:48 (Link) Videos
4-4: Merge Sort Allison's Section (Youtube) : 1:15:47 to 1:20:38 (Link) Videos
4-4: Merge Sort Rob's Short (Youtube) (Link) Videos
4-4: Merge Sort Doug's Section (Youtube) (Link) Videos
4-4: Merge Sort David's Lecture (MP4 Download) : 17:54 to 24:48 (Link) Videos
4-4: Merge Sort Allison's Section (MP4 Download) : 1:15:47 to 1:20:38 (Link) Videos
4-4: Merge Sort Rob's Short (MP4 Download) (Link) Videos
4-4: Merge Sort Doug's Section (MP4 Download) (Link) Videos
4-4: Merge Sort Lecture Notes (Link) Written Resources
4-4: Merge Sort CS50 Study Page on Merge Sort (Link) Written Resources
4-4: Merge Sort Merge Sort PowerPoint Slides (Link) Slides
4-4: Merge Sort Allison's Slides : 49 to 56 (Link) Slides
4-4: Merge Sort Live-action Sort : As with all other sorting algorithms, having students participate in a live-action sort, such as by student height or by students simply holding numbered pieces of paper, is a good way to visualize this algorithm. Demonstration Ideas
4-4: Merge Sort Merge sort is clearly faster, but thinking about the way the algorithm runs, there are trade offs to be made. What's the most significant trade off with merge sort that we don't have to deal with in any of the n² sorts we've seen thus far? Thought Questions
4-4: Merge Sort Are there ever situations where it might be more useful to not use merge sort and use a different algorithm instead, notwithstanding merge sort's better worst-case runtime? Thought Questions
4-4: Merge Sort What is your favorite algorithm for sorting of the ones we've encountered? Why? Thought Questions
4-4: Merge Sort Khan Academy Merge Sort (Link) External Resources
4-4: Merge Sort LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
4-5: Hexadecimal David's Lecture (Youtube) : 4:30 to 8:07 (Link) Videos
4-5: Hexadecimal Doug's Section (Youtube) (Link) Videos
4-5: Hexadecimal David's Lecture (MP4 Download) : 4:30 to 8:07 (Link) Videos
4-5: Hexadecimal Doug's Section (MP4 Download) (Link) Videos
4-5: Hexadecimal Lecture Notes (Link) Written Resources
4-5: Hexadecimal Hexadecimal PowerPoint Slides (Link) Slides
4-5: Hexadecimal Binary Bulbs Part 2 : If you still have a binary bulbs rig, this might be a good opportunity to show how much more information can be conveyed in a single hexadecimal digit versus a set of four binary digits. Demonstration Ideas
4-5: Hexadecimal How do I represent the number 50 in hexadecimal using only two digits? What about 128? What about 256? : How can we resolve this? Thought Questions
4-5: Hexadecimal Why do we have different number systems? Isn't decimal enough? Thought Questions
4-5: Hexadecimal Hexadecimal Number System (Link) External Resources
4-5: Hexadecimal Convert Directly from Binary to Hexadecimal (Link) External Resources
4-6: File I/O David's Lecture (Youtube) : 54:29 to 59:10 (Link) Videos
4-6: File I/O Allison's Section (Youtube) : 7:37 to 32:57 (Link) Videos
4-6: File I/O Jason's Short (Youtube) (Link) Videos
4-6: File I/O David's Lecture (MP4 Download) : 54:29 to 59:10 (Link) Videos
4-6: File I/O Allison's Section (MP4 Download) : 7:37 to 32:57 (Link) Videos
4-6: File I/O Jason's Short (MP4 Download) (Link) Videos
4-6: File I/O Lecture Notes : Scroll to File I/O 55:00 to 62:00 (Link) Written Resources
4-6: File I/O CS50 Study Page on File I/O (Link) Written Resources
4-6: File I/O File I/O PowerPoint Slides (Link) Slides
4-6: File I/O Allison's Slides : 4 to 11 (Link) Slides
4-6: File I/O Write your own Linux commands! : It is very easy to write two simple UNIX/Linux commands with basic C file I/O -- cat (using fopen(), fgetc(), and fclose()) and cp (same, using fputc() also). Good practice for your students! Demonstration Ideas
4-6: File I/O When might it be useful for our progams to have persistent data? Thought Questions
4-6: File I/O What information do you think is bound up in the FILE data type? Thought Questions
4-6: File I/O Doug's File I/O video : Doug's video on file manipulation (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
4-7: Images David's Lecture: Part 1 (Youtube) : 0:28 to 4:30 (Link) Videos
4-7: Images David's Lecture: Part 2 (Youtube) : 8:26 to 9:47 (Link) Videos
4-7: Images Zamyla's Walkthrough (Youtube) (Link) Videos
4-7: Images David's Lecture: Part 1 (MP4 Download) : 0:28 to 4:30 (Link) Videos
4-7: Images David's Lecture: Part 2 (MP4 Download) : 8:26 to 9:47 (Link) Videos
4-7: Images Zamyla's Walkthrough (MP4 Download) (Link) Videos
4-7: Images Lecture Notes (Link) Written Resources
4-7: Images Images PowerPoint Slides (Link) Written Resources
4-7: Images xxd : Use the command line utility xxd on a small bitmap in the terminal to examine the bits Demonstration Ideas
4-7: Images Compression : Compress a JPG multiple times (using regular Windows or OSX image tools) so students can see how it does not do well with compression when you try to "recover" the original. Demonstration Ideas
4-7: Images Why do bitmaps have headers? Thought Questions
4-7: Images Why should we ever use something that is not a .png? Thought Questions
4-7: Images Why are JPGs not always the best file type? Thought Questions
4-7: Images LO 1.2.3 : Create a new computational artifact by combining or modifying existing artifacts Learning Objectives
4-7: Images LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information Learning Objectives
4-8: Version Control Anna's Seminar (Youtube) (Link) Videos
4-8: Version Control Anna's Seminar (MP4 Download) (Link) Videos
4-8: Version Control Version Control PowerPoint Slides (Link) Slides
4-8: Version Control To git or not to git? : If you have experience with Git, even really basic stuff, it could be really valuable to show this to your students. Git can be an advanced-enough topic that we don't really cover it in CS50 except in the context of end-of-semester seminars, but it is so incredibly useful to students for what they might later do in their careers, that it can be worth the effort to take 20-30 minutes to cover the basics. Demonstration Ideas
4-8: Version Control Dropbox : Though Dropbox cannot be synced to the IDE, if students don't already have a Dropbox account they should get set up with one of those as well; walking them through the process and showing how Dropbox syncs to the cloud and across devices is nice. Demonstration Ideas
4-8: Version Control Sharing is Caring : Show students how to share a workspace (though many of you probably do this for collecting assessments, it might also be nice to show this to students for how they might collaborate with one another -- this also could lead to a good discussion of the course's academic honesty policy, which is pasted at the top of every problem specification. Demonstration Ideas
4-8: Version Control Driver and Navigator : Give an example of what an interaction between the driver and navigator might look like in that collaboration model. Demonstration Ideas
4-8: Version Control Why do you think the driver / navigator model is set up the way that it is, with the roles so clearly delineated? : Do you think 5 minutes is a good amount of time between switches between the two roles? Why or why not? Thought Questions
4-8: Version Control What additional advantages does Git have over some of the other models, particular as it might pertain to two people working on the same project at the same time? Thought Questions
4-8: Version Control Driver Navigator Model (Link) External Resources
A-0: Stacks David's Lecture (Youtube) : 27:35 to 28:55 (Link) Videos
A-0: Stacks Allison's Section (Youtube) : 38:46 to 44:52 (Link) Videos
A-0: Stacks Doug's Short (Youtube) (Link) Videos
A-0: Stacks David's Lecture (MP4 Download) : 27:35 to 28:55 (Link) Videos
A-0: Stacks Allison's Section (MP4 Download) : 38:46 to 44:52 (Link) Videos
A-0: Stacks Doug's Short (MP4 Download) (Link) Videos
A-0: Stacks Lecture Notes (Link) Written Resources
A-0: Stacks CS50 Study Page on Stacks (Link) Written Resources
A-0: Stacks Stacks PowerPoint Slides (Link) Slides
A-0: Stacks Allison's Slides : 42 to 46 (Link) Slides
A-0: Stacks Lunch trays : Do a demo with lunch trays, or indeed even paper plates, perhaps writing a number on each plate to demonstrate the LIFO nature of a stack. Demonstration Ideas
A-0: Stacks In what situation would a LIFO data structure, such as a stack, offer advantages? Thought Questions
A-0: Stacks What are some stack-like situations in the real world? Thought Questions
A-0: Stacks LO 2.1.1 : Describe the variety of abstractions used to represent data Learning Objectives
A-0: Stacks LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-1: Queues David's Lecture (Youtube) : 29:00 to 30:43 (Link) Videos
A-1: Queues Allison's Section (Youtube) : 44:52 to 46:17 (Link) Videos
A-1: Queues Chris's Short (Youtube) : Array based implementation of a queue, 0:00 to 5:16 (Link) Videos
A-1: Queues Doug's Short (Youtube) : Array based implementation of a queue, 0:00 to 11:28 (Link) Videos
A-1: Queues David's Lecture (MP4 Download) : 29:00 to 30:43 (Link) Videos
A-1: Queues Allison's Section (MP4 Download) : 44:52 to 46:17 (Link) Videos
A-1: Queues Chris's Short (MP4 Download) : Array based implementation of a queue, 0:00 to 5:16 (Link) Videos
A-1: Queues Doug's Short (MP4 Download) : Array based implementation of a queue, 0:00 to 11:28 (Link) Videos
A-1: Queues Lecture Notes (Link) Written Resources
A-1: Queues CS50 Study Page for Queues (Link) Written Resources
A-1: Queues Queues PowerPoint Slides (Link) Slides
A-1: Queues Allison's Slides : 47 to 51 (Link) Slides
A-1: Queues Role Play : Have the students act out a queue, and compare enqueue and dequeue to push and pop. Demonstration Ideas
A-1: Queues What situations would a queue be useful for? Thought Questions
A-1: Queues LO 2.1.1 : Describe the variety of abstractions used to represent data. Learning Objectives
A-1: Queues LO 3.3.1 : Analyze how data representation, storage, security and transmission of data involve computational manipulation of information? Learning Objectives
A-2: Pointers David's Lecture: Part 1 (Youtube) : 20:36 to 45:27 (Link) Videos
A-2: Pointers David's Lecture: Part 2 (Youtube) : 17:27 to 24:26 (Link) Videos
A-2: Pointers Allison's Section (Youtube) : 33:00 to 1:02:29 (Link) Videos
A-2: Pointers Rob's Short (Youtube) (Link) Videos
A-2: Pointers Doug's Short (Youtube) (Link) Videos
A-2: Pointers David's Lecture: Part 1 (MP4 Download) : 20:36 to 45:27 (Link) Videos
A-2: Pointers David's Lecture: Part 2 (MP4 Download) : 17:27 to 24:26 (Link) Videos
A-2: Pointers Allison's Section (MP4 Download) : 33:00 to 1:02:29 (Link) Videos
A-2: Pointers Rob's Short (MP4 Download) (Link) Videos
A-2: Pointers Doug's Short (MP4 Download) (Link) Videos
A-2: Pointers Lecture Notes (Part 1) (Link) Written Resources
A-2: Pointers Lecture Notes (Part 2) (Link) Written Resources
A-2: Pointers CS50 Study Page on Pointers (Link) Written Resources
A-2: Pointers Allison's Slides : 12 to 23 (Link) Slides
A-2: Pointers Pointing : Having students literally point at each other while the teacher describes what each operation does. Demonstration Ideas
A-2: Pointers Drawing : Drawing pictures: this will be very helpful to students when completing problems. Demonstration Ideas
A-2: Pointers What are the advantages of being able to access addresses in memory? Thought Questions
A-2: Pointers What are the dangers of using pointers? Thought Questions
A-2: Pointers If pointers are so great, why do we ever pass by value? Thought Questions
A-2: Pointers Pointer Fun with Binky : Choose the C version (Link) External Resources
A-2: Pointers LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-3: Dynamic Memory David's Lecture (Youtube) : 12:00 to 43:39 (Link) Videos
A-3: Dynamic Memory Allison's Section (Youtube) : 1:01:45 to 1:11:18 (Link) Videos
A-3: Dynamic Memory Doug's Short (Youtube) (Link) Videos
A-3: Dynamic Memory David's Lecture (MP4 Download) : 12:00 to 43:39 (Link) Videos
A-3: Dynamic Memory Allison's Section (MP4 Download) : 1:01:45 to 1:11:18 (Link) Videos
A-3: Dynamic Memory Doug's Short (MP4 Download) (Link) Videos
A-3: Dynamic Memory Lecture Notes (Link) Written Resources
A-3: Dynamic Memory Dynamic Memory PowerPoint Slides (Link) Slides
A-3: Dynamic Memory Allison's Slides : 24 to 28 (Link) Slides
A-3: Dynamic Memory Balloons : malloc == blowing up a balloon, allocating a pointer == tying a string to a balloon, losing a pointer = releasing a balloon/cutting the string so it can no longer be accessed, free == popping a balloon Demonstration Ideas
A-3: Dynamic Memory What does dynamic memory allocation allow us to do? Thought Questions
A-3: Dynamic Memory How can we translate malloc() and free() into pseudocode? Thought Questions
A-3: Dynamic Memory Should we always have an equal number of calls to malloc() and free(); Thought Questions
A-3: Dynamic Memory Man Pages : For malloc(), realloc(), calloc(), and free() (Link) External Resources
A-3: Dynamic Memory LO 3.3.1 : Analyse how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-4: Valgrind David's Lecture (Youtube) : 43:45 to 48:51 (Link) Videos
A-4: Valgrind Nate's Short (Youtube) (Link) Videos
A-4: Valgrind David's Lecture (MP4 Download) : 43:45 to 48:51 (Link) Videos
A-4: Valgrind Nate's Short (MP4 Download) (Link) Videos
A-4: Valgrind Lecture Notes (Link) Written Resources
A-4: Valgrind Valgrind PowerPoint Slides (Link) Slides
A-4: Valgrind Pretend to be valgrind : Run the same demonstration as memory allocation but this time have the person blindfolded. Then have someone pretend to be Valgrind and tell them what happened. Demonstration Ideas
A-4: Valgrind Why is it important to track down memory leaks? Thought Questions
A-4: Valgrind Valgrind Manual (Link) External Resources
A-4: Valgrind LO 3.3.1 : Analyze how data representaion, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-5: Trees David's Lecture (Youtube) : 31:14 to 35:25 (Link) Videos
A-5: Trees Allison's Section (Youtube) : 34:20 to 38:46 (Link) Videos
A-5: Trees Bannus's Short (Youtube) (Link) Videos
A-5: Trees David's Lecture (MP4 Download) : 31:14 to 35:25 (Link) Videos
A-5: Trees Allison's Section (MP4 Download) : 34:20 to 38:46 (Link) Videos
A-5: Trees Bannus's Short (Link) Videos
A-5: Trees CS50 Study Page for Trees (Link) Written Resources
A-5: Trees Trees PowerPoint Slides (Link) Slides
A-5: Trees Allison's Slides : 36-41 (Link) Slides
A-5: Trees Family Tree : Have students list their family members, then draw a family tree. Then show other students only one and have them try to guess a grandparent's name. Demonstration Ideas
A-5: Trees What real world situations are best described in a tree? Thought Questions
A-5: Trees What makes binary search trees so powerful? Thought Questions
A-5: Trees How else could we sort the data in a tree? Thought Questions
A-5: Trees Notes on Trees : From Princeton (Link) External Resources
A-5: Trees LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-6: Tries David's Lecture (Youtube) : 18:50 to 27:35 (Link) Videos
A-6: Tries Allison's Section (Youtube) : 21:45 to 34:28 (Link) Videos
A-6: Tries Kevin's Short (Youtube) (Link) Videos
A-6: Tries Doug's Short (Youtube) (Link) Videos
A-6: Tries David's Lecture (MP4 Download) : 18:50 to 27:35 (Link) Videos
A-6: Tries Allison's Section (MP4 Download) : 21:45 to 34:28 (Link) Videos
A-6: Tries Kevin's Short (MP4 Download) (Link) Videos
A-6: Tries Doug's Short (MP4 Download) (Link) Videos
A-6: Tries Lecture Notes (Link) Written Resources
A-6: Tries CS50 Study Page for Tries (Link) Written Resources
A-6: Tries Tries PowerPoint Slides (Link) Slides
A-6: Tries Allison's Slides : 19-35 (Link) Slides
A-6: Tries Why can we say that tries have constant time lookup and insertion? Thought Questions
A-6: Tries What real world situations could a trie be useful for besides a dictionary? Thought Questions
A-6: Tries What are the trade-offs involved in using a trie, and what are situations where one side matters moret han the other? Thought Questions
A-6: Tries LO 3.3.1 : Analyze how data representation, storage, security and transmission of data involve computational manipulation of information? Learning Objectives
A-6: Tries LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correcntess, and clarity. Learning Objectives
A-7: Linked Lists David's Lecture (Youtube) : 16:34 to 47:38 (Link) Videos
A-7: Linked Lists Allison's Lecture (Youtube) : 2:00 to 13:00 (Link) Videos
A-7: Linked Lists Jackson's Short (Youtube) (Link) Videos
A-7: Linked Lists Doug's Short: Stacks and Linked Lists (Youtube) : Linked List Implementation 9:51 to end (Link) Videos
A-7: Linked Lists Chris's Short: Queues and Linked Lists (Youtube) : Linked List Implementation 5:16 to end (Link) Videos
A-7: Linked Lists Doug's Short: Queues and Linked Lists (Youtube) : Linked List implementation 11:28 to end (Link) Videos
A-7: Linked Lists Doug's Section: Singly Linked Lists (Youtube) (Link) Videos
A-7: Linked Lists Doug's Section: Doubly Linked Lists (Youtube) (Link) Videos
A-7: Linked Lists David's Lecture (MP4 Download) : 16:34 to 47:38 (Link) Videos
A-7: Linked Lists Allison's Lecture (MP4 Youtube) : 2:00 to 13:00 (Link) Videos
A-7: Linked Lists Jackson's Short (MP4 Download) (Link) Videos
A-7: Linked Lists Doug's Short: Stacks and Linked Lists (MP4 Download) : Linked List Implementation 9:51 to end (Link) Videos
A-7: Linked Lists Chris's Short: Queues and Linked Lists (MP4 Download) : Linked List Implementation 5:16 to end (Link) Videos
A-7: Linked Lists Doug's Short: Queues and Linked Lists (MP4 Download) : Linked List implementation 11:28 to end (Link) Videos
A-7: Linked Lists Doug's Section: Singly Linked Lists (MP4 Download) (Link) Videos
A-7: Linked Lists Doug's Section: Doubly Linked Lists (MP4 Download) (Link) Videos
A-7: Linked Lists Lecture Notes (Link) Written Resources
A-7: Linked Lists CS50 Study Page on Linked Lists (Link) Written Resources
A-7: Linked Lists Linked Lists PowerPoint Slides (Link) Slides
A-7: Linked Lists Allison's Slides : 2 to 12 (Link) Slides
A-7: Linked Lists Act Out : Have students act out David's example from lecture, where they act quite literally as nodes, holding a value and pointing. Demonstration Ideas
A-7: Linked Lists Acting Doubly : Students could also act out a doubly linked list, with the value taped to their shirt and pointing with both hands. Demonstration Ideas
A-7: Linked Lists More Balloons : Extend the balloon example by tying multiple balloons together and cutting a string to represent how lots of data can be lost at once. Demonstration Ideas
A-7: Linked Lists What are some trade-offs between using an array, a singly linked list, or a doubly linked list? Thought Questions
A-7: Linked Lists How would one implement a stack and a queue using linked lists? Thought Questions
A-7: Linked Lists When would one want to implement a stack and a queue using a linked list? Thought Questions
A-7: Linked Lists LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-7: Linked Lists LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
A-8: Hash Tables David's Lecture (Youtube) : 4:15 to 18:45 (Link) Videos
A-8: Hash Tables Allison's Section (Youtube) : 13:00 to 21:30 (Link) Videos
A-8: Hash Tables Lauren's Short (Youtube) (Link) Videos
A-8: Hash Tables Doug's Short (Youtube) (Link) Videos
A-8: Hash Tables David's Lecture (MP4 Download) : 4:15 to 18:45 (Link) Videos
A-8: Hash Tables Allison's Section (MP4 Download) : 13:00 to 21:30 (Link) Videos
A-8: Hash Tables Lauren's Short (MP4 Download) (Link) Videos
A-8: Hash Tables Doug's Short (MP4 Download) (Link) Videos
A-8: Hash Tables Lecture Notes (Link) Written Resources
A-8: Hash Tables CS50 Stud Page on Hash Tables (Link) Written Resources
A-8: Hash Tables Hash Tables PowerPoint Slides (Link) Slides
A-8: Hash Tables Allison's Slides : 13-18 (Link) Slides
A-8: Hash Tables Buckets : Get a few buckets and stack things in the buckets according to a "hash function" that the students create. Demonstration Ideas
A-8: Hash Tables Sorting Papers : Sort papers, like David's example of sorting CS50 quizzes. Demonstration Ideas
A-8: Hash Tables What real world situation is a hash table useful for? Thought Questions
A-8: Hash Tables Hash tables and tries can often accomplish similar tasks. What are the benefits of using each? Thought Questions
A-8: Hash Tables LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
A-8: Hash Tables LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
5-0: Internet Basics David's Lecture (Youtube) : 5:23 to 8:12 (Link) Videos
5-0: Internet Basics Doug's Section (Youtube) (Link) Videos
5-0: Internet Basics David's Lecture (MP4 Download) : 5:23 to 8:12 (Link) Videos
5-0: Internet Basics Doug's Section (MP4 Download) (Link) Videos
5-0: Internet Basics Lecture Notes (Link) Written Resources
5-0: Internet Basics Internet PowerPoint Slides (Link) Slides
5-0: Internet Basics Connections : Give students all a notecard on which is written a different component of an internet connection. Some of them will be packets of data; see if the packets can get to their destination by having students place themselves in the correct order. Demonstration Ideas
5-0: Internet Basics Given the many different components that comprise an internet connection, how do we ensure all of them work together properly? If you do disconnect, what aret he places you should look to find the problem? Thought Questions
5-0: Internet Basics Warriors of the Net : This video is a good overview of the internet's inner workings. It may make more sense after going in depth through the next three modules, but serves as a good introductory video as well. (Link) External Resources
5-0: Internet Basics LO 1.2.5 : Analyze the correctness, usability, functionality, and suitability of computational artifacts. Learning Objectives
5-0: Internet Basics LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
5-0: Internet Basics LO 6.2.1 : Explain characteristics of the Internet and the systems build on it. Learning Objectives
5-1: IP Addresses David's Lecture (Youtube) : 0:40 to 11:50 (Link) Videos
5-1: IP Addresses Doug's Section (Youtube) (Link) Videos
5-1: IP Addresses David's Lecture (MP4 Download) : 0:40 to 11:50 (Link) Videos
5-1: IP Addresses Doug's Section (MP4 Download) (Link) Videos
5-1: IP Addresses Lecture Notes (Link) Written Resources
5-1: IP Addresses IP Addresses PowerPoint Slides (Link) Slides
5-1: IP Addresses Your IP Address : Have students find their IP addresses on their computer and connect to one another's addresses using the terminal command ping or something similar. Demonstration Ideas
5-1: IP Addresses Your Favorite IP Addresses : Have students find the IP addresses of their favorite websites and get to them by typing the IP address instead of the URL. Demonstration Ideas
5-1: IP Addresses Can you think of potential problems if two devices were to have the same IP address on a network? It would be very difficult to discern which device was performing which operations. : In fact, MAC spoofing is an example of this. (Link) Thought Questions
5-1: IP Addresses What do you think will happen when we run out of valid IP addresses? : A temporary solution has been created, but it's not perfect. (Link) Thought Questions
5-1: IP Addresses LO 1.2.5 : Analyze the correctness, usability, functionality, and suitability of computational artifacts. Learning Objectives
5-1: IP Addresses LO 3.2.1 : Extract information from data to discover and explain connections, patterns, or trends. Learning Objectives
5-1: IP Addresses LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
5-1: IP Addresses LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
5-2: DNS and DHCP David's Lecture (Youtube) : 5:30 to 11:55 (Link) Videos
5-2: DNS and DHCP David's Lecture (MP4 Download) : 5:30 to 11:55 (Link) Videos
5-2: DNS and DHCP Lecture Notes (Link) Written Resources
5-2: DNS and DHCP DNS and DHCP PowerPoint Slides (Link) Slides
5-2: DNS and DHCP Phone Book : An analogy for DNS to use is a phone book - you look up a person's name, and are given their phone number if you need to contact them. This is similar to typing in a website URL, which is then translated to an IP address. Demonstration Ideas
5-2: DNS and DHCP Dynamically Assigning Numbers : An analogy for DHCP could be anything dealing with dynamically assigning numbers to devices, i.e. numbers at a deli, characters in a board game, etc. The key is that it is possible to have the same number more than once, but that it is not guaranteed. Demonstration Ideas
5-2: DNS and DHCP Why do we need DHCP? Thought Questions
5-2: DNS and DHCP Why do we need (or rather, why is it nice to have) DNS? Thought Questions
5-2: DNS and DHCP Security Issues (Link) External Resources
5-2: DNS and DHCP LO 3.2.1 : Extract information from data to discover and explain connections, patterns, or trends. Learning Objectives
5-2: DNS and DHCP LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
5-2: DNS and DHCP LO 5.3.1 : Use abstraction to manage complexity in programs. Learning Objectives
5-2: DNS and DHCP LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
5-2: DNS and DHCP LO 6.2.2 : Explain how the characteristics of the Internet influence the systems build on it. Learning Objectives
5-3: Routers David's Lecture (Youtube) : 11:51 to 26:00 (Link) Videos
5-3: Routers Doug's Section (Youtube) : 0:00 to 10:20 (Link) Videos
5-3: Routers David's Lecture (MP4 Download) : 11:51 to 26:00 (Link) Videos
5-3: Routers Doug's Section (MP4 Download) : 0:00 to 10:20 (Link) Videos
5-3: Routers Lecture Notes (Link) Written Resources
5-3: Routers Routers PowerPoint Slides (Link) Slides
5-3: Routers Traceroute : Traceroute is a great command! Its use is demonstrated by David in the lecture above. Have students use traceroute on several websites of their choosing. Demonstration Ideas
5-3: Routers What parameters do routers use to sort data packets? Thought Questions
5-3: Routers Why do you think data will seemingly travel farther away than is necessary only to return back to a desired location (i.e. going from Seattle to Los Angeles and then back up to Palo Alto)? Thought Questions
5-3: Routers Warriors of the Net : He's TCP/IP. And he's got your address. (Link) External Resources
5-3: Routers LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
5-3: Routers LO 6.2.1 : Explain characteristics of the Internet and the systems build on it. Learning Objectives
5-3: Routers LO 6.2.2 : Explain how the characteristics of the Internet influence the systems build on it. Learning Objectives
5-4: TCP and IP David's Lecture (Youtube) : 13:54 to 27:17 (Link) Videos
5-4: TCP and IP Doug's Section: IP (Youtube) : 10:20 to end (Link) Videos
5-4: TCP and IP Doug's Section: TCP (Youtube) (Link) Videos
5-4: TCP and IP David's Lecture (MP4 Download) : 13:54 to 27:17 (Link) Videos
5-4: TCP and IP Doug's Section: IP (MP4 Download) : 10:20 to end (Link) Videos
5-4: TCP and IP Doug's Section: TCP (MP4 Download) (Link) Videos
5-4: TCP and IP Lecture Notes (Link) Written Resources
5-4: TCP and IP TCP/IP PowerPoint Slides (Link) Slides
5-4: TCP and IP Traceroute : Traceroute can also be a good demonstration tactic here, with an emphasis on the number of hops and packets instead of the route itself. Demonstration Ideas
5-4: TCP and IP How do TCP and IP work together to ensure efficient and reliable packet delivery across the Internet? Thought Questions
5-4: TCP and IP Warriors of the Net : He's TCP/IP. And he's got your address. (Link) External Resources
5-4: TCP and IP LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
5-4: TCP and IP LO 6.2.1 : Explain characteristics of the Internet and the systems build on it. Learning Objectives
5-4: TCP and IP LO 6.2.2 : Explain how the characteristics of the Internet influence the systems build on it. Learning Objectives
5-5: HTTP David's Lecture: Part 1 (Youtube) : 27:24 to 37:05 (Link) Videos
5-5: HTTP David's Lecture: Part 2 (Youtube) : 3:14 to 5:49 (Link) Videos
5-5: HTTP David's Short (Youtube) (Link) Videos
5-5: HTTP Doug's Section (Youtube) (Link) Videos
5-5: HTTP David's Lecture: Part 1 (MP4 Download) : 27:24 to 37:05 (Link) Videos
5-5: HTTP David's Lecture: Part 2 (MP4 Download) : 3:14 to 5:49 (Link) Videos
5-5: HTTP David's Short (MP4 Download) (Link) Videos
5-5: HTTP Doug's Section (MP4 Download) (Link) Videos
5-5: HTTP Lecture Notes (Part 1) (Link) Written Resources
5-5: HTTP Lecture Notes (Part 2) (Link) Written Resources
5-5: HTTP CS50 Study Page for HTTP (Link) Written Resources
5-5: HTTP HTTP PowerPoint Slides (Link) Slides
5-5: HTTP Status Codes : Find examples of the different status codes on the web (most commonly a 404 or 403), and show them to your students using Chrome's Developer Tools or the like. Demonstration Ideas
5-5: HTTP Requests : Similarly, find examples of different types of requests. Load the pages with Developer Tools and display the requests to the students. Demonstration Ideas
5-5: HTTP In what circumstances would you want a GET request? A POST request? Thought Questions
5-5: HTTP Can you list some of the common HTTP status codes? Thought Questions
5-5: HTTP HTTP vs HTTPS : If interested in the difference between HTTP and HTTPS (Link) External Resources
5-5: HTTP LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information Learning Objectives
5-5: HTTP LO 6.2.1 : Explain characteristics fo the Internet and the systems built on it. Learning Objectives
5-6: Trust Models and Open Source Guest Lecture by Rob (Youtube) : 0:00 to 32:11 (Link) Videos
5-6: Trust Models and Open Source Guest Lecture by Rob (MP4 Download) : 0:00 to 32:11 (Link) Videos
5-6: Trust Models and Open Source Lecture Notes (Link) Written Resources
5-6: Trust Models and Open Source Trust Models PowerPoint Slides (Link) Written Resources
5-6: Trust Models and Open Source Reflections on Trusting Trust (Link) External Resources
5-6: Trust Models and Open Source Think of several examples of open source programs we simply "trust" to not do anything bad to us. Thought Questions
5-6: Trust Models and Open Source Why do we trust these programs? What makes us believe that they're safe? Thought Questions
5-6: Trust Models and Open Source LO 6.3.1 : Identify existing cybersecurity concerns and potential options to address these issues with the Internet and the systems build on it. Learning Objectives
5-7: Cybersecurity David's Lecture: Permissions (Youtube) : 17:45 to 20:45 (Link) Videos
5-7: Cybersecurity David's Lecture: Two Factor Authentication and SSL (Youtube) : 16:09 to 25:55 (Link) Videos
5-7: Cybersecurity David's Lecture: Cyberattacks (Youtube) : 9:31 to 46:38 (Link) Videos
5-7: Cybersecurity David's Lecture: Permissions (MP4 Download) : 17:45 to 20:45 (Link) Videos
5-7: Cybersecurity David's Lecture: Two Factor Authentication and SSL (MP4 Download) : 16:09 to 25:55 (Link) Videos
5-7: Cybersecurity David's Lecture: Cyberattacks (MP4 Download) : 9:31 to 46:38 (Link) Videos
5-7: Cybersecurity Lecture Notes: Permissions (Link) Written Resources
5-7: Cybersecurity Lecture Notes: SSL (Link) Written Resources
5-7: Cybersecurity Lecture Notes: Cyberattacks (Link) Written Resources
5-7: Cybersecurity Permissions and SSL PowerPoint Slides (Link) Slides
5-7: Cybersecurity Cyberattacks PowerPoint Slides (Link) Slides
5-7: Cybersecurity Insecurity : Find an insecure website (non-https) desiring input of a password or credit card number to show your students how easy it is to spoof something that looks secure. Demonstration Ideas
5-7: Cybersecurity Permission Levels : If you can display webpages on your localhost to students, you can demonstrate different permission levels on a simple page, talking about why it is beneficial to keep some pages private and only the necessary ones public. Demonstration Ideas
5-7: Cybersecurity Stories : Students tend to identify with stories they've heard; try to find a cyberattack that has been in the news recently and talk about it! You can probably find a video and show that as well; similar to David's John Oliver clip above. Demonstration Ideas
5-7: Cybersecurity How can we try to protect ourselves from the most blatant internet security problems? Thought Questions
5-7: Cybersecurity How does SSL work to secure personal information sent over the internet? Thought Questions
5-7: Cybersecurity What are the most common types of cyberattacks? How are they caughe and remedied or defended against moving forward? Thought Questions
5-7: Cybersecurity Stalking your Friends (Link) External Resources
5-7: Cybersecurity Password Managers (Link) External Resources
5-7: Cybersecurity Transport Layer Security (Link) External Resources
5-7: Cybersecurity Heartbleed (Link) External Resources
5-7: Cybersecurity 5 Most Common Cyberattacks (Link) External Resources
5-7: Cybersecurity Sony (Link) External Resources
5-7: Cybersecurity More Cyberattacks (Link) External Resources
5-7: Cybersecurity LO 3.3.1 : Analyze how data representation, storage, security Learning Objectives
5-7: Cybersecurity LO 6.3.1 : Identify existing cybersecurity concerns and potential options to address these issues with the Internet and the systems build on it. Learning Objectives
5-8: HTML David's Lecture: Part 1 (Youtube) : 37:05 to 40:18 (Link) Videos
5-8: HTML David's Lecture: Part 2 (Youtube) : 6:00 to 35:32 (Link) Videos
5-8: HTML Allison's Section (Youtube) : 27:10 to end (Link) Videos
5-8: HTML Daven's Short (Youtube) (Link) Videos
5-8: HTML David's Walkthrough 1 (Youtube) (Link) Videos
5-8: HTML David's Walkthrough 2 (Youtube) (Link) Videos
5-8: HTML David's Walkthrough 3 (Youtube) (Link) Videos
5-8: HTML David's Walkthrough 4 (Youtube) (Link) Videos
5-8: HTML David's Walkthrough 5 (Youtube) (Link) Videos
5-8: HTML Doug's Section (Youtube) (Link) Videos
5-8: HTML David's Lecture: Part 1 (MP4 Download) : 37:05 to 40:18 (Link) Videos
5-8: HTML David's Lecture: Part 2 (MP4 Download) : 6:00 to 35:32 (Link) Videos
5-8: HTML Allison's Section (MP4 Download) : 27:10 to end (Link) Videos
5-8: HTML Daven's Short (MP4 Download) (Link) Videos
5-8: HTML David's Walkthrough 1 (MP4 Download) (Link) Videos
5-8: HTML David's Walkthrough 2 (MP4 Download) (Link) Videos
5-8: HTML David's Walkthrough 3 (MP4 Download) (Link) Videos
5-8: HTML David's Walkthrough 4 (MP4 Download) (Link) Videos
5-8: HTML David's Walkthrough 5 (MP4 Download) (Link) Videos
5-8: HTML Doug's Section (MP4 Download) (Link) Videos
5-8: HTML Lecture Notes (Part 1) (Link) Written Resources
5-8: HTML Lecture Notes (Part 2) (Link) Written Resources
5-8: HTML HTML PowerPoint Slides (Link) Slides
5-8: HTML Allison's Slides (Link) Slides
5-8: HTML Simple Website : What kinds of things does HTML allow us to do on web pages? Demonstration Ideas
5-8: HTML Developer Tools : Take a look at an existing website using Chrome's Developer Tools and have your students figure out what the individual tags do. Demonstration Ideas
5-8: HTML What kinds of things does HTML allow us to do on web pages? Thought Questions
5-8: HTML What kinds of things can't we do with HTML that we need another language to handle? Thought Questions
5-8: HTML RefCardz (Link) External Resources
5-8: HTML w3schools (Link) External Resources
5-8: HTML Validator (Link) External Resources
5-8: HTML Codecademy (Link) External Resources
5-8: HTML LO 2.2.2 : Use multiple levels of abstraction to write programs. Learning Objectives
5-8: HTML LO 6.2.1 : Explain characteristics of the Internet and the systems build on it. Learning Objectives
5-9: CSS David's Lecture (Youtube) : 35:33 to 42:57 (Link) Videos
5-9: CSS Allison's Section (Youtube) : 31:00 to end (Link) Videos
5-9: CSS Joseph's Short (Youtube) (Link) Videos
5-9: CSS David's Walkthrough 1 (Youtube) (Link) Videos
5-9: CSS David's Walkthrough 2 (Youtube) (Link) Videos
5-9: CSS David's Walkthrough 3 (Youtube) (Link) Videos
5-9: CSS Doug's Section (Youtube) (Link) Videos
5-9: CSS David's Lecture (MP4 Download) : 35:33 to 42:57 (Link) Videos
5-9: CSS Allison's Section (MP4 Download) : 31:00 to end (Link) Videos
5-9: CSS Joseph's Short (MP4 Download) (Link) Videos
5-9: CSS David's Walkthrough 1 (MP4 Download) (Link) Videos
5-9: CSS David's Walkthrough 2 (MP4 Download) (Link) Videos
5-9: CSS David's Walkthrough 3 (MP4 Download) (Link) Videos
5-9: CSS Doug's Section (MP4 Download) (Link) Videos
5-9: CSS Lectur Notes (Link) Written Resources
5-9: CSS CSS PowerPoint Slides (Link) Slides
5-9: CSS Allison's Slides : 16 to 17 (Link) Slides
5-9: CSS Webpage 2.0 : Similar to the HTML demonstration, you can create a simple webpage, this time including a CSS sheet to stylize. Demonstration Ideas
5-9: CSS Creativity : Create a simple activity that allows students to be creative with their styling; they can make a basic webpage and choose colors, fonts, shading, etc. Demonstration Ideas
5-9: CSS What does CSS allow you to do? Thought Questions
5-9: CSS What are the different ways to incorporate CSS into HTML code? Thought Questions
5-9: CSS Refcardz (Link) External Resources
5-9: CSS CSSplay (Link) External Resources
5-9: CSS w3schools (Link) External Resources
5-9: CSS Codecademy (Link) External Resources
5-9: CSS LO 2.2.2 : Use multiple levels of abstraction to write programs. Learning Objectives
5-9: CSS LO 6.2.1 : Explain characteristics of the Internet and the systems built on it. Learning Objectives
6-0: PHP David's Lecture (Youtube) : 43:30 to end (Link) Videos
6-0: PHP Allison's Section (Youtube) : Start 2:30 (Link) Videos
6-0: PHP Tommy's Short (Youtube) (Link) Videos
6-0: PHP Doug's Section (Youtube) (Link) Videos
6-0: PHP David's Lecture (MP4 Download) : 43:30 to end (Link) Videos
6-0: PHP Allison's Section (MP4 Download) : Start 2:30 (Link) Videos
6-0: PHP Tommy's Short (MP4 Download) (Link) Videos
6-0: PHP Doug's Section (MP4 Download) (Link) Videos
6-0: PHP Lecture Notes (Link) Written Resources
6-0: PHP PHP PowerPoint Slides (Link) Slides
6-0: PHP Allison's Slides (Link) Slides
6-0: PHP PHP spell-checker : Reimplementing the spell-checker in PHP live in class can be a shocking and impactful demonstration, for those students who are familiar with the complexity of C's implementation. (Link) Demonstration Ideas
6-0: PHP What is the point of studying C for so long if we now take the time to learn PHP? Thought Questions
6-0: PHP PHP manual (Link) External Resources
6-0: PHP w3schools (Link) External Resources
6-0: PHP Web Cheat Sheets (Link) External Resources
6-0: PHP Codecademy (Link) External Resources
6-0: PHP LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
6-0: PHP LO 6.2.2 : Explain how the characteristics of the Internet influence the systems built on it. Learning Objectives
6-0: PHP LO 7.1.1 : Explain how computing innovations affect communication, interaction, and cognition. Learning Objectives
6-1: PHP for Web Programming David's Lecture (Youtube) : Start 0:45 (Link) Videos
6-1: PHP for Web Programming Allison's Section (Youtube) : Start 3:00 (Link) Videos
6-1: PHP for Web Programming Tommy's Short (Youtube) (Link) Videos
6-1: PHP for Web Programming Doug's Section (Youtube) (Link) Videos
6-1: PHP for Web Programming David's Lecture (MP4 Download) : Start 0:45 (Link) Videos
6-1: PHP for Web Programming Allison's Section (MP4 Download) : Start 3:00 (Link) Videos
6-1: PHP for Web Programming Tommy's Short (MP4 Download) (Link) Videos
6-1: PHP for Web Programming Doug's Section (MP4 Download) (Link) Videos
6-1: PHP for Web Programming Lecture Notes (Link) Written Resources
6-1: PHP for Web Programming PHP for Web Programming PowerPoint Slides (Link) Slides
6-1: PHP for Web Programming Allison's Slides (Link) Slides
6-1: PHP for Web Programming LO 6.1.1 : Explain the abstractions int he Internet and how the Internet functions Learning Objectives
6-1: PHP for Web Programming LO 6.2.1 : Explain the characteristics of the Internet and systems built on it Learning Objectives
6-1: PHP for Web Programming LO 6.2.2 : Explain how the characteristics of the Interneg influence the systems built on it Learning Objectives
6-2: SQL David's Lecture (Youtube) : Start 13:45 (Link) Videos
6-2: SQL Allison's Section (Youtube) : Start 35:10 (Link) Videos
6-2: SQL Christopher's Short (Youtube) (Link) Videos
6-2: SQL Doug's Section (Youtube) (Link) Videos
6-2: SQL David's Lecture (MP4 Download) : Start 13:45 (Link) Videos
6-2: SQL Allison's Section (MP4 Download) : Start 35:10 (Link) Videos
6-2: SQL Christopher's Short (MP4 Download) (Link) Videos
6-2: SQL Doug's Section (MP4 Download) (Link) Videos
6-2: SQL Lecture Notes (Link) Written Resources
6-2: SQL SQL PowerPoint Slides (Link) Slides
6-2: SQL Allison's Slides (Link) Slides
6-2: SQL phpMyAdmin demonstrations : Open up phpMyAdmin in your IDE and demonstrate each of the basic operations (SELECT, INSERT, UPDATE, DELETE) using the graphical tabs. Then repeat all of the basic operations only using the SQL tab to show the text based power, so students will be able to contemplate how they might access their databases programmatically. Demonstration Ideas
6-2: SQL How is the notion of a database different from file management with C? Thought Questions
6-2: SQL What are some of the advantages of SQL? What are some fo the disadvantages? Thought Questions
6-2: SQL mySQL docs (Link) External Resources
6-2: SQL Non-ASCII mySQL (Link) External Resources
6-2: SQL w3schools (Link) External Resources
6-3: MVC David's Lecture: Part 1 (Youtube) : 37:14 to 51:02 (Link) Videos
6-3: MVC David's Lecture: Part 2 (Youtube) : 33:44 to 45:08 (Link) Videos
6-3: MVC Doug's Section (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 0 (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 1 (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 2 (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 3 (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 4 (Youtube) (Link) Videos
6-3: MVC David's Walkthrough 5 (Youtube) (Link) Videos
6-3: MVC David's Lecture: Part 1 (MP4 Download) : 37:14 to 51:02 (Link) Videos
6-3: MVC David's Lecture: Part 2 (MP4 Download) : 33:44 to 45:08 (Link) Videos
6-3: MVC Doug's Section (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 0 (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 1 (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 2 (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 3 (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 4 (MP4 Download) (Link) Videos
6-3: MVC David's Walkthrough 5 (MP4 Download) (Link) Videos
6-3: MVC Lecture Notes (Link) Written Resources
6-3: MVC MVC PowerPoint Slides (Link) Slides
6-3: MVC Website 3 : Make a simple website using the MVC paradigm, or have your students do it themselves for practice. Demonstration Ideas
6-3: MVC Diagram a Website : Take a look at an existing website and have students try to diagram which part of the paradigm each part of the website falls into. Demonstration Ideas
6-3: MVC Why is MVC useful tool for developing websites? Thought Questions
6-3: MVC What languages might be necessary in order to use MVC effectively? Thought Questions
6-3: MVC w3schools (Link) External Resources
6-3: MVC LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipuation of information. Learning Objectives
6-3: MVC LO 6.2.1 : Explain characteristics of the Internet and the systems built on it. Learning Objectives
6-4: JavaScript David's Lecture (Youtube) : Start 34:30 (Link) Videos
6-4: JavaScript Allison's Section (Youtube) : Start 2:45 (Link) Videos
6-4: JavaScript Doug's Section: JavaScript (Youtube) (Link) Videos
6-4: JavaScript Doug's Section: DOM (Youtube) (Link) Videos
6-4: JavaScript David's Lecture (MP4 Download) : Start 34:30 (Link) Videos
6-4: JavaScript Allison's Section (MP4 Download) : Start 2:45 (Link) Videos
6-4: JavaScript Doug's Section: JavaScript (MP4 Download) (Link) Videos
6-4: JavaScript Doug's Section: DOM (MP4 Download) (Link) Videos
6-4: JavaScript Lecture Notes (Link) Written Resources
6-4: JavaScript CS50 Study Page for JavaScript (Link) Written Resources
6-4: JavaScript JavaScript PowerPoint Slides (Link) Slides
6-4: JavaScript Allison's Slides (Link) Slides
6-4: JavaScript JavaScript Guide (Link) External Resources
6-4: JavaScript JavaScript Reference (Link) External Resources
6-4: JavaScript w3schools (Link) External Resources
6-4: JavaScript Codecademy (Link) External Resources
6-5: Ajax David's Lecture: Part 1 (Youtube) : 25:55 to end (Link) Videos
6-5: Ajax David's Lecture: Part 2 (Youtube) : 5:20 to end (Link) Videos
6-5: Ajax Doug's Section (Youtube) (Link) Videos
6-5: Ajax David's Lecture: Part 1 (MP4 Download) : 25:55 to end (Link) Videos
6-5: Ajax David's Lecture: Part 2 (MP4 Download) : 5:20 to end (Link) Videos
6-5: Ajax Lecture Notes (Link) Written Resources
6-5: Ajax AJAX PowerPoint Slides (Link) Slides
6-5: Ajax Google Maps (Link) Demonstration Ideas
6-5: Ajax Gmail (Link) Demonstration Ideas
6-5: Ajax What common websites seem to be using Ajax, and how can you tell? Thought Questions
6-5: Ajax w3schools (Link) External Resources
6-5: Ajax LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
6-5: Ajax LO 6.1.1 : Explain the abstractions of the Internet and how the Internet functions Learning Objectives
6-5: Ajax EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
6-6: Artificial Intelligence Scaz's Short: Recommender Systems (Youtube) (Link) Videos
6-6: Artificial Intelligence Scaz's Short: Self-Driving Cars (Youtube) (Link) Videos
6-6: Artificial Intelligence Scaz's Lecture: Part 1 (Youtube) (Link) Videos
6-6: Artificial Intelligence Scaz's Lecture: Part 2 (Youtube) (Link) Videos
6-6: Artificial Intelligence Scaz's Short: Introduction to AI (MP4 Download) (Link) Videos
6-6: Artificial Intelligence Scaz's Short: Recommender Systems (MP4 Download) (Link) Videos
6-6: Artificial Intelligence Scaz's Short: Self-Driving Cars (MP4 Download) (Link) Videos
6-6: Artificial Intelligence Scaz's Lecture: Part 1 (MP4 Download) (Link) Videos
6-6: Artificial Intelligence Scaz's Lecture: Part 2 (MP4 Download) (Link) Videos
6-6: Artificial Intelligence Lecture Notes (Part 1) (Link) Written Resources
6-6: Artificial Intelligence Lecture Notes (Part 2) (Link) Written Resources
6-6: Artificial Intelligence Eliza : Have students attempt to converse with Eliza: By compiling and running CS50's C code: http://cdn.cs50.net/2015/fall/lectures/10/w/src10w/eliza.c.src. By using a web implementation: http://nlp-addiction.com/eliza/. By running a Java executable: http://chayden.net/eliza/Eliza.html Demonstration Ideas
6-6: Artificial Intelligence How should ethical dilemmas be handled with artificial intelligence? For instance, if a self driving car can steer away from a group of 10 people to a group of 5, should it be programmed to? Thought Questions
6-6: Artificial Intelligence Why do humans playing board games not have to consider as many possibilities as AIs do? How do they limit which possibilities they consider? Thought Questions
6-6: Artificial Intelligence AlphaGo : If interested in the larger impact of Google's AlphaGo (an artificial intelligence system that beat a famous Go player) (Link) External Resources
6-6: Artificial Intelligence AI Teaching Assistant : If interested in Artificial Intelligence in the news (an AI Teaching Assistant) (Link) External Resources
6-6: Artificial Intelligence LO 2.3.1 : Use models and simulations to represent phenomena Learning Objectives
6-6: Artificial Intelligence A Problem with Machine Learning : Get 10 pictures. Have 3 of them include different pictures of water (e.g. a class of water, a pool, and the ocean) and the rest of them not include water. Present the 10 pictures to your class and ask your students to pick out all the pictures that have water in them. Ask them how they knew that the pictures had water in them and proceed to then explain how machine learning has not developed enough for computers to do such tasks. Demonstration Ideas
6-7: Virtual and Augmented Reality What other fields could benefit from VR and AR? Thought Questions
6-7: Virtual and Augmented Reality LO 7.1.1 : Explain how computing innovations affect communication, interaction, and cognition. Learning Objectives
3-2: Selection Sort David's Lecture: Part 1 (Youtube) : 28:31 to 31:56 (Link) Videos
3-2: Selection Sort David's Lecture: Part 2 (Youtube) : 38:42 to 39:26 (Link) Videos
3-2: Selection Sort Tommy's Short (Youtube) (Link) Videos
3-2: Selection Sort Doug's Section (Youtube) (Link) Videos
3-2: Selection Sort David's Lecture (MP4 Download) : 28:31 to 31:56 and 38:42 to 39:26 (Link) Videos
3-2: Selection Sort Tommy's Short (MP4 Download) (Link) Videos
3-2: Selection Sort Doug's Section (MP4 Download) (Link) Videos
3-2: Selection Sort Lecture Notes (Link) Written Resources
3-2: Selection Sort Selection Sort PowerPoint Slides (Link) Slides
3-2: Selection Sort CS50 Study Page on Selection Sort (Link) Slides
3-2: Selection Sort Live-action Sort : As with all other sorting algorithms, having students participate in a live-action sort, such as by student height or by students simply holding numbered pieces of paper, is a good way to visualize this algorithm. Demonstration Ideas
3-2: Selection Sort What advantages does selection sort have over bubble sort? What disadvantages are there? Thought Questions
3-2: Selection Sort Under what circumstances, if any, is selection sort preferable to bubble sort? Thought Questions
3-2: Selection Sort Khan Academy (Link) External Resources
3-2: Selection Sort LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correcntess, and clarity. Learning Objectives
3-0: Linear Search David's Lecture (Youtube) : 4:32 to 11:56 (Link) Videos
3-0: Linear Search Patrick's Short (Youtube) (Link) Videos
3-0: Linear Search Doug's Section (Youtube) (Link) Videos
3-0: Linear Search David's Lecture (MP4 Download) : 4:32 to 11:56 (Link) Videos
3-0: Linear Search Patrick's Short (MP4 Download) (Link) Videos
3-0: Linear Search Doug's Section (MP4 Download) (Link) Videos
3-0: Linear Search Linear Search PowerPoint Slides (Link) Slides
3-0: Linear Search Phone Book : We're revisiting some fundamental concepts first touched on way back in the phone book example from Unit 0. Might be worth bringing that phone book back out once again! Demonstration Ideas
3-0: Linear Search When is it advantageous to use linear search? When is it not so advantageous? Thought Questions
3-0: Linear Search LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
3-1: Bubble Sort David's Lecture: Part 1 (Youtube) : 31:58 to 35:10 (Link) Videos
3-1: Bubble Sort David's Lecture: Part 2 (Youtube) : 37:30 to 38:42 (Link) Videos
3-1: Bubble Sort Doug's Section 1 (Youtube) (Link) Videos
3-1: Bubble Sort Allison's Section (Youtube) : 36:50 to 41:25 (Link) Videos
3-1: Bubble Sort Jackson's Short (Youtube) (Link) Videos
3-1: Bubble Sort Doug's Section 2 (Youtube) (Link) Videos
3-1: Bubble Sort David's Lecture: Parts 1 & 2 (MP4 Download) : 31:58 to 35:10 and 37:30 to 38:42 (Link) Videos
3-1: Bubble Sort Doug's Section 1 (MP4 Download) (Link) Videos
3-1: Bubble Sort Allison's Section (MP4 Download) (Link) Videos
3-1: Bubble Sort Jackson's Short (MP4 Download) (Link) Videos
3-1: Bubble Sort Doug's Section 2 (MP4 Download) (Link) Videos
3-1: Bubble Sort Lecture Notes (Link) Written Resources
3-1: Bubble Sort Sorting PowerPoint Slides (Link) Slides
3-1: Bubble Sort BubbleSort PowerPoint Slides (Link) Slides
3-1: Bubble Sort Allison's Slides : 13 to 20 (Link) Slides
3-1: Bubble Sort CS50 Study Page for BubbleSort (Link) Slides
3-1: Bubble Sort "Where's the 50?" : The "Where's the 50?" game that David plays in lecture is usually a riot, either because it goes spectacularly well (as was the case with Ajay) or spectacularly poorly (as was the case with Sean). Demonstration Ideas
3-1: Bubble Sort Live-action Sort : As with all other sorting algorithms, having students participate in a live-action sort, such as by student height or by students simply holding numbered pieces of paper, is a good way to visualize this algorithm. Demonstration Ideas
3-1: Bubble Sort Why is sorting data useful? Thought Questions
3-1: Bubble Sort Why does it matter what method we use to sort our data? Thought Questions
3-1: Bubble Sort What makes bubble sort an effective sort? What makes it ineffective? Thought Questions
3-1: Bubble Sort Why might we, as Allison does, decide to keep track of how many swaps we have made on each pass through the array? Thought Questions
3-1: Bubble Sort What sorting algorithms sound like - short reason : https://www.youtube.com/watch?v=t8g-iYGHpEA External Resources
3-1: Bubble Sort What sorting algorithms sound like - long reason : https://www.youtube.com/watch?v=ZZuD6iUe3Pc External Resources
3-1: Bubble Sort Side-by-side sorting algorithms : https://www.youtube.com/watch?v=ZZuD6iUe3Pc External Resources
3-1: Bubble Sort Bubble Sort from Doug : Doug's video on bubble sort (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
3-1: Bubble Sort LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
3-3: Insertion Sort David's Lecture: Part 1 (Youtube) : 35:10 to 37:30 (Link) Videos
3-3: Insertion Sort David's Lecture: Part 2 (Youtube) : 39:26 to 40:20 (Link) Videos
3-3: Insertion Sort Tommy's Short (Youtube) (Link) Videos
3-3: Insertion Sort Doug's Short (Youtube) (Link) Videos
3-3: Insertion Sort David's Lecture: Parts 1 and 2 (MP4 Download) : 35:10 to 37:30 and 39:26 to 40:20 (Link) Videos
3-3: Insertion Sort Tommy's Short (MP4 Download) (Link) Videos
3-3: Insertion Sort Doug's Section (MP4 Download) (Link) Videos
3-3: Insertion Sort Lecture Notes (Link) Written Resources
3-3: Insertion Sort Insertion Sort PowerPoint Slides (Link) Slides
3-3: Insertion Sort CS50 Study Page on Insertion Sort (Link) Slides
3-3: Insertion Sort Live-action Sort (Link) Demonstration Ideas
3-3: Insertion Sort What advantages does insertion sort have over either selection sort or bubble sort? What disadvantages are there? Thought Questions
3-3: Insertion Sort Under what, circumstances, if any, is insertion sort preferable to either of the previous sorts we've seen so far? Thought Questions
3-3: Insertion Sort What makes insertion sort fundamentally different from the previous sorts in its approach? Thought Questions
3-3: Insertion Sort Khan Academy (Link) External Resources
3-3: Insertion Sort LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
3-4: Binary Search David's Lecture (Youtube) : 11:56 to 15:18 (Link) Videos
3-4: Binary Search Allison's Section (Youtube) : 19:30 to 25:04 (Link) Videos
3-4: Binary Search Patrick's Short (Youtube) (Link) Videos
3-4: Binary Search Doug's Section (Youtube) (Link) Videos
3-4: Binary Search David's Lecture (MP4 Download) : 11:56 to 15:18 (Link) Videos
3-4: Binary Search Allison's Section (MP4 Download) : 19:30 to 25:04 (Link) Videos
3-4: Binary Search Patrick's Short (MP4 Download) (Link) Videos
3-4: Binary Search Doug's Section (Link) Videos
3-4: Binary Search CS50 Study Page for Binary Search (Link) Written Resources
3-4: Binary Search Insertion Sort PowerPoint Slides (Link) Slides
3-4: Binary Search Allison's Slides : 5 to 12 (Link) Slides
3-4: Binary Search Phone book : Compare searching through a phonebook with linear search and binary search. Demonstration Ideas
3-4: Binary Search Ping Pong Balls : Also fairly dramatic is to do binary search with numbered ping-pong balls sitting on plastic cups, smacking away various portions of the "array" as you go through the search. Demonstration Ideas
3-4: Binary Search Under which condidtions is it more efficient to use binary search versus linear search on a set of data? Thought Questions
3-4: Binary Search Under which ocnditions is it more efficient to use linear search versus binary search? Thought Questions
3-4: Binary Search Why is binary search an O(log n) algorithm? Thought Questions
3-4: Binary Search How many steps, maximally, does it take to run binary search on a (sorted) data set of size 64? 4096? 4294967296? Thought Questions
3-4: Binary Search Khan Academy (Link) External Resources
3-4: Binary Search Doug on Binary Search : Doug's video on linear search (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
3-4: Binary Search LO 4.2.1 : Explain the difference between algorithms that run in a reasonable time and those that do not run in a reasonable time. Learning Objectives
3-4: Binary Search LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
3-4: Binary Search LO 5.2.1 : Explain how programs implement algorithms. Learning Objectives
3-5: Time Complexity David's Lecture (Youtube) : 40:20 to 58:02 (Link) Videos
3-5: Time Complexity Jackson's Short (Youtube) (Link) Videos
3-5: Time Complexity Doug's Section (Youtube) (Link) Videos
3-5: Time Complexity David's Lecture (MP4 Download) : 40:20 to 58:02 (Link) Videos
3-5: Time Complexity Jackson's Short (MP4 Download) (Link) Videos
3-5: Time Complexity Doug's Section (MP4 Download) (Link) Videos
3-5: Time Complexity Lecture Notes (Link) Written Resources
3-5: Time Complexity Time Complexity PowerPoint Slides (Link) Slides
3-5: Time Complexity Side-by-Side : If you haven't already watched this video comparing sorting algorithms side-by-side, it's worth a watch. Now that students possess the vocabulary to understand the theoretical runtime of some basic sorts, it may have more impact. (Link) Demonstration Ideas
3-5: Time Complexity In what ways can we measure the resources that our programs consume? Thought Questions
3-5: Time Complexity Is it always better to choose an algorithm that runs in O(n) over one that runs in O(n²)? Why or why not? Thought Questions
3-5: Time Complexity Why do you think that we analyze algorithms from a theoretical standpoint using asymptotic notation, instead of just counting runtime in seconds or the like? : In what ways does this adherence to asymptotic notation (disregarding constants and lower order terms) hinder our ability to speak about algorithms in the real world? Thought Questions
3-5: Time Complexity How might we use time complexity analysis to our benefit as programmers before we even write any code? Thought Questions
3-5: Time Complexity Khan Academy (Link) External Resources
3-5: Time Complexity Doug on Time Complexity : Doug's video on time complexity (from CS50 2015 and what will become eventually part of CS50 AP 1617) (Link) External Resources
3-5: Time Complexity LO 2.3.2 : Use models and simulations to formulate, refine, and test hypotheses. Learning Objectives
3-5: Time Complexity LO 4.2.1 : Explain the difference between algorithms that run in a reasonable time and those that do not run in a reasonable time. Learning Objectives
3-6: Unsolvable Problems Unsolvable Problems PowerPoint Slides (Link) Slides
3-6: Unsolvable Problems Can you come up with other questions that a computer would never be able to answer? Thought Questions
3-6: Unsolvable Problems The Halting Problem (Link) External Resources
3-6: Unsolvable Problems Undecideable Problems : A little bit more complicated (Link) External Resources
3-6: Unsolvable Problems LO 2.3.2 : Use models and simulations to formulate, refine, and test hypotheses. Learning Objectives
3-6: Unsolvable Problems LO 4.2.2 : Explain the difference between solvable and unsolvable problems in computer science. Learning Objectives
0-0: Computers and Computing Around the House (Link) Written Problems
0-4: Memory Tech Spotlight (Link) Written Problems
0-7: Algorithms Everyday Algorithms (Link) Written Problems
0-0: Computers and Computing Computers and Computing (Link) Reference Sheets
0-2: Bits and Bytes Bits and Bytes (Link) Reference Sheets
0-3: Hardware Hardware (Link) Reference Sheets
0-4: Memory Memory (Link) Reference Sheets
0-5: Binary Binary (Link) Reference Sheets
0-6: ASCII ASCII (Link) Reference Sheets
0-7: Algorithms Algorithms (Link) Reference Sheets
1-0: Pseudocode Pseudocode (Link) Reference Sheets
1-1: Scratch Scratch (Link) Reference Sheets
1-2: Syntax Syntax (Link) Reference Sheets
1-3: Variables Variables (Link) Reference Sheets
1-4: Data Types Data Types (Link) Reference Sheets
1-5: Operators Operators (Link) Reference Sheets
1-6: Boolean Expressions and Conditionals Boolean Expressions (Link) Reference Sheets
1-7: Loops Loops (Link) Reference Sheets
2-0: Compiling Compiling (Link) Reference Sheets
2-1: Functions Functions (Link) Reference Sheets
2-2: Arrays and Strings Arrays and Strings (Link) Reference Sheets
2-3: Command-Line Interaction Command-Line Interaction (Link) Reference Sheets
2-4: Exit Codes Exit Codes (Link) Reference Sheets
2-5: Libraries Libraries (Link) Reference Sheets
2-6: Typecasting Typecasting (Link) Reference Sheets
2-7: Bugs and Debugging Bugs and Debugging (Link) Reference Sheets
5-0: Internet Basics Internet Basics (Link) Reference Sheets
5-1: IP Addresses IP Addresses (Link) Reference Sheets
5-2: DNS and DHCP DNS and DHCP (Link) Reference Sheets
5-3: Routers Routers (Link) Reference Sheets
5-4: TCP and IP TCP and IP (Link) Reference Sheets
5-5: HTTP HTTP (Link) Reference Sheets
5-6: Trust Models and Open Source Trust Models (Link) Reference Sheets
5-7: Cybersecurity Cybersecurity (Link) Reference Sheets
5-8: HTML HTML (Link) Reference Sheets
5-9: CSS CSS (Link) Reference Sheets
1-1: Scratch Scratch (Problem) (Link) Programming Problems
1-2: Syntax Hello (Link) Programming Problems
1-5: Operators Fahrenheit (Link) Programming Problems
1-5: Operators Pennies (Link) Programming Problems
1-6: Boolean Expressions and Conditionals Greedy (Link) Programming Problems
1-7: Loops ISBN (Link) Programming Problems
1-7: Loops Mario (less) : for those less comfortable (Link) Programming Problems
1-7: Loops Credit (Link) Programming Problems
1-5: Operators Doug's Section (Youtube) : 0:00 to 4:57 (Link) Videos
1-5: Operators Doug's Section (MP4 Download) (Link) Videos
1-5: Operators How do operators in C compare to operators in math? Do they always translate to the same thing? Thought Questions
1-5: Operators What is x++, x--, +=, and *= shorthand for? Thought Questions
1-5: Operators C-Operators : list of operators available in C (Link) External Resources
1-5: Operators C Programming Operators : Code examples using operators (Link) External Resources
2-0: Compiling Me, Myself, and UI (Link) Written Problems
2-0: Compiling Reverse Engineer (Link) Programming Problems
2-4: Exit Codes Old Friends (Link) Programming Problems
2-4: Exit Codes Calc (Link) Programming Problems
2-6: Typecasting Caesar (Link) Programming Problems
2-7: Bugs and Debugging Vigenère (Link) Programming Problems
2-7: Bugs and Debugging Crack (Link) Programming Problems
3-3: Insertion Sort Sort Race (Link) Programming Problems
3-3: Insertion Sort Analyze This (Link) Written Problems
3-5: Time Complexity Scramble (Part 1) (Link) Programming Problems
3-0: Linear Search Linear Search (Link) Reference Sheets
3-1: Bubble Sort Bubble Sort (Link) Reference Sheets
3-2: Selection Sort Selection Sort (Link) Reference Sheets
3-3: Insertion Sort Insertion Sort (Link) Reference Sheets
3-4: Binary Search Binary Search (Link) Reference Sheets
3-5: Time Complexity Time Complexity (Link) Reference Sheets
3-6: Unsolvable Problems Unsolvable Problems (Link) Reference Sheets
4-2: Structures and Encapsulation Structures and Encapsulation (Link) Reference Sheets
4-2: Structures and Encapsulation Sudoku (Part 1) (Link) Programming Problems
4-2: Structures and Encapsulation Sudoku (Part 2) (Link) Programming Problems
4-4: Merge Sort Scramble (Part 2) (Link) Programming Problems
4-6: File I/O Finder (Link) Programming Problems
4-7: Images Whodunit (Link) Programming Problems
4-7: Images Scale (Link) Programming Problems
4-7: Images Shrink (Link) Programming Problems
4-7: Images Recover (Link) Programming Problems
5-9: CSS </Chapter5> (Link) Programming Problems
6-0: PHP Birthday Party (Link) Programming Problems
6-1: PHP for Web Programming Address Book (Link) Programming Problems
6-3: MVC C$50 Finance (Part 1) (Link) Programming Problems
6-3: MVC C$50 Finance (Part 2) (Link) Programming Problems
6-5: Ajax Mashup (Link) Programming Problems
5-7: Cybersecurity Defender of the Web (Link) Written Problems
5-5: HTTP Be the Teacher (Link) Written Problems
A-1: Queues Calc 2 (Link) Programming Problems
A-4: Valgrind Leaky (Link) Programming Problems
A-6: Tries Autocomplete (Link) Programming Problems
A-7: Linked Lists Decisions (Link) Written Problems
A-8: Hash Tables Mispellings (Part 1) (Link) Programming Problems
A-8: Hash Tables Mispellings (Part 2) (Link) Programming Problems
B-1: Data Compression Blockdude (Link) Programming Problems
B-2: Huffman Coding Puff (Link) Programming Problems
B-2: Huffman Coding Huff (Link) Programming Problems
B-3: Scalability Degrees of Scalability (Link) Written Problems
B-4: Collaboration Server (Part 1) (Link) Programming Problems
B-4: Collaboration Server (Part 2) (Link) Programming Problems
3-7: Simulation Simulate! (Link) Written Problems
5-6: Trust Models and Open Source 7 things you should know about P2P (Link) External Resources
5-6: Trust Models and Open Source What is the Digital Millennium Copyright Act? (Link) External Resources
5-6: Trust Models and Open Source Creative Commons License : CS50 AP is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License. Check out this resource to see what this entails. (Link) External Resources
6-6: Artificial Intelligence Machine Learning Notes (Link) Written Resources
6-6: Artificial Intelligence Patrick's Lecture (Youtube) : 1:49 to 11:19 (Link) Videos
3-7: Simulation Conway's Game of Life (Link) External Resources
3-7: Simulation Pixar's use of Simulation (water) (Link) External Resources
3-7: Simulation Pixar's use of Simulation (hair) : Take a look at springs and how they are applied to animate hair. Try making your own simulation here too! (Link) External Resources
6-7: Virtual and Augmented Reality David's Lecture (Youtube) (Link) Videos
6-7: Virtual and Augmented Reality What ethical issues might one encounter when working with VR and AR? Thought Questions
6-7: Virtual and Augmented Reality AR Ski Goggles (Link) External Resources
6-7: Virtual and Augmented Reality Virtual reality versus augmented reality: Which is the future? (Link) Written Resources
0-0: Computers and Computing EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
0-0: Computers and Computing EU 3.1 : People use computer programs to process information to gain insight and knowledge. Enduring Understandings
0-0: Computers and Computing EU 4.1 : Algorithms are precise sequences of instructions for processes that can be executed by a computer and are implemented using programming languages. Enduring Understandings
0-0: Computers and Computing EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
0-1: How Computers Work EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
0-2: Bits and Bytes EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
0-3: Hardware LO 7.2.1 : Explain how computing has impacted innovations in other fields. Learning Objectives
0-3: Hardware EU 7.2 : Computing enables innovation in nearly every field. Enduring Understandings
0-4: Memory EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
0-5: Binary EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
0-6: ASCII EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
0-7: Algorithms EU 4.1 : Algorithms are precise sequences of instructions for processes that can be executed by a computer and are implemented using programming languages. Enduring Understandings
0-7: Algorithms EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
1-0: Pseudocode EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-0: Pseudocode EU 4.1 : Algorithms are precise sequences of instructions for processes that can be executed by a computer and are implemented using programming languages. Enduring Understandings
1-0: Pseudocode EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
1-1: Scratch EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
1-1: Scratch EU 1.3 : Computing can extend traditional forms of human expression and experience. Enduring Understandings
1-1: Scratch EU 5.1 : Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations, or society). Enduring Understandings
1-1: Scratch EU 5.5 : Programming uses mathematical and logical concepts. Enduring Understandings
1-2: Syntax EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-3: Variables EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
1-3: Variables EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-4: Data Types EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
1-5: Operators EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
1-5: Operators EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-5: Operators EU 5.2 : People write programs to execute algorithms. Enduring Understandings
1-6: Boolean Expressions and Conditionals EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
1-6: Boolean Expressions and Conditionals EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-6: Boolean Expressions and Conditionals EU 5.2 : People write programs to execute algorithms. Enduring Understandings
1-7: Loops EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
1-7: Loops EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
1-7: Loops EU 5.2 : People write programs to execute algorithms. Enduring Understandings
2-0: Compiling EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
2-0: Compiling EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
2-1: Functions EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
2-1: Functions EU 5.2 : People write programs to execute algorithms. Enduring Understandings
2-1: Functions EU 5.3 : Programming is facilitated by appropriate abstractions. Enduring Understandings
2-2: Arrays and Strings EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
2-2: Arrays and Strings EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
2-3: Command-Line Interaction EU 5.5 : Programming uses mathematical and logical concepts. Enduring Understandings
2-4: Exit Codes EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
2-4: Exit Codes EU 5.5 : Programming uses mathematical and logical concepts. Enduring Understandings
2-5: Libraries EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
2-5: Libraries EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
2-6: Typecasting LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
2-6: Typecasting EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
2-7: Bugs and Debugging EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
2-7: Bugs and Debugging EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
2-7: Bugs and Debugging EU 5.1 : Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations, or society). Enduring Understandings
2-7: Bugs and Debugging EU 5.4 : Programs are developed, maintained, and used by people for different purposes. Enduring Understandings
3-0: Linear Search EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-1: Bubble Sort EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-2: Selection Sort EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-3: Insertion Sort EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-4: Binary Search EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-4: Binary Search EU 5.2 : People write programs to execute algorithms. Enduring Understandings
3-5: Time Complexity LO 4.2.4 : Evaluate algorithms analytically and empirically for efficiency, correctness, and clarity. Learning Objectives
3-5: Time Complexity EU 2.3 : Models and simulations use abstraction to generate new understanding and knowledge. Enduring Understandings
3-5: Time Complexity EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-6: Unsolvable Problems LO 4.2.3 : Explain the existence of undecidable problems in computer science. Learning Objectives
3-6: Unsolvable Problems EU 2.3 : Models and simulations use abstraction to generate new understanding and knowledge. Enduring Understandings
3-6: Unsolvable Problems EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
3-7: Simulation LO 2.3.1 : Use models and simulations to represent phenomena. Learning Objectives
3-7: Simulation LO 2.3.2 : Use models and simulations to formulate, refine, and test hypotheses. Learning Objectives
3-7: Simulation EU 2.3 : Models and simulations use abstraction to generate new understanding and knowledge. Enduring Understandings
4-0: Principles of Good Design EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
4-1: ncurses LO 1.1.1 : Apply a creative development process when creating computational artifacts. Learning Objectives
4-1: ncurses LO 1.2.2 : Create a computational artifact using computing tools and techniques to solve a problem. Learning Objectives
4-1: ncurses LO 1.2.3 : Create a new computational artifact by combining or modifying existing artifacts. Learning Objectives
4-1: ncurses LO 1.3.1 : Use computing tools and techniques for creative expression. Learning Objectives
4-1: ncurses LO 2.2.2 : Use multiple levels of abstraction to write programs. Learning Objectives
4-1: ncurses EU 1.1 : Creative development can be an essential process for creating computational artifacts. Enduring Understandings
4-1: ncurses EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
4-1: ncurses EU 1.3 : Computing can extend traditional forms of human expression and experience. Enduring Understandings
4-1: ncurses EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
4-2: Structures and Encapsulation EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
4-2: Structures and Encapsulation EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
4-3: Recursion EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
4-4: Merge Sort EU 4.2 : Algorithms can solve many, but not all, computational problems. Enduring Understandings
4-5: Hexadecimal LO 2.1.2 : Explain how binary sequences are used to represent digital data. Learning Objectives
4-5: Hexadecimal LO 3.1.1 : Find patterns and test hypotheses about digitally processed information to gain insight and knowledge. Learning Objectives
4-5: Hexadecimal LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
4-5: Hexadecimal EU 2.1 : A variety of abstractions built on binary sequences can be used to represent all digital data. Enduring Understandings
4-5: Hexadecimal EU 3.1 : People use computer programs to process information to gain insight and knowledge. Enduring Understandings
4-5: Hexadecimal EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
4-6: File I/O LO 5.1.2 : Develop a correct program to solve problems. Learning Objectives
4-6: File I/O LO 5.3.1 : Use abstraction to manage complexity in programs. Learning Objectives
4-6: File I/O EU 5.1 : Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations, or society). Enduring Understandings
4-6: File I/O EU 5.3 : 5.3 Programming is facilitated by appropriate abstractions. Enduring Understandings
4-7: Images EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
4-7: Images EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
4-8: Version Control LO 1.2.3 : Create a new computational artifact by combining or modifying existing artifacts. Learning Objectives
4-8: Version Control LO 1.2.4 : Collaborate in the creation of computational artifacts. Learning Objectives
4-8: Version Control LO 3.1.2 : Collaborate when processing information to gain insight and knowledge. Learning Objectives
4-8: Version Control LO 5.1.3 : Collaborate to develop a program. Learning Objectives
4-8: Version Control EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
4-8: Version Control EU 3.1 : People use computer programs to process information to gain insight and knowledge. Enduring Understandings
4-8: Version Control EU 5.1 : Programs can be developed for creative expression, to satisfy personal curiosity, to create new knowledge, or to solve problems (to help people, organizations, or society). Enduring Understandings
5-0: Internet Basics EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
5-0: Internet Basics EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
5-0: Internet Basics EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-1: IP Addresses EU 1.2 : Computing enables people to use creative development processes to create computational artifacts for creative expression or to solve a problem. Enduring Understandings
5-1: IP Addresses EU 3.2 : Computing facilitates exploration and the discovery of connections in information. Enduring Understandings
5-1: IP Addresses EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
5-1: IP Addresses EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
5-2: DNS and DHCP EU 3.2 : Computing facilitates exploration and the discovery of connections in information. Enduring Understandings
5-2: DNS and DHCP EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
5-2: DNS and DHCP EU 5.3 : Programming is facilitated by appropriate abstractions. Enduring Understandings
5-2: DNS and DHCP EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
5-2: DNS and DHCP EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-3: Routers EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
5-3: Routers EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-4: TCP and IP EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
5-4: TCP and IP EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-5: HTTP EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
5-5: HTTP EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-6: Trust Models and Open Source LO 7.3.1 : Analyze the beneficial and harmful effects of computing. Learning Objectives
5-6: Trust Models and Open Source EU 6.3 : Cybersecurity is an important concern for the Internet and the systems built on it. Enduring Understandings
5-6: Trust Models and Open Source EU 7.3 : Computing has a global affect — both beneficial and harmful — on people and society. Enduring Understandings
5-7: Cybersecurity LO 7.3.1 : Analyze the beneficial and harmful effects of computing. Learning Objectives
5-7: Cybersecurity EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
5-7: Cybersecurity EU 6.3 : Cybersecurity is an important concern for the Internet and the systems built on it. Enduring Understandings
5-7: Cybersecurity EU 7.3 : Computing has a global affect — both beneficial and harmful — on people and society. Enduring Understandings
5-8: HTML EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
5-8: HTML EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
5-9: CSS EU 2.2 : Multiple levels of abstraction are used to write programs or create other computational artifacts. Enduring Understandings
5-9: CSS EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
6-0: PHP EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
6-0: PHP EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
6-0: PHP EU 7.1 : Computing enhances communication, interaction, and cognition. Enduring Understandings
6-1: PHP for Web Programming EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
6-1: PHP for Web Programming EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
6-2: SQL LO 3.1.3 : Explain the insight and knowledge gained from digitally processed data by using appropriate visualizations, notations, and precise language. Learning Objectives
6-2: SQL LO 3.2.1 : Extract information from data to discover and explain connections or trends. Learning Objectives
6-2: SQL LO 3.3.1 : Analyze how data representation, storage, security, and transmission of data involve computational manipulation of information. Learning Objectives
6-2: SQL EU 3.1 : People use computer programs to process information to gain insight and knowledge. Enduring Understandings
6-2: SQL EU 3.2 : Computing facilitates exploration and the discovery of connections in information. Enduring Understandings
6-2: SQL EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
6-3: MVC LO 7.5.1 : Access, manage, and attribute information using effective strategies. Learning Objectives
6-3: MVC EU 3.3 : There are trade-offs when representing information as digital data. Enduring Understandings
6-3: MVC EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
6-3: MVC EU 7.5 : An investigative process is aided by effective organization and selection of resources. Appropriate technologies and tools facilitate the accessing of information and enable the ability to evaluate the credibility of sources. Enduring Understandings
6-4: JavaScript LO 6.1.1 : Explain the abstractions in the Internet and how the Internet functions. Learning Objectives
6-4: JavaScript LO 6.2.2 : Explain how the characteristics of the Internet influence the systems built on it. Learning Objectives
6-4: JavaScript LO 7.1.1 : Explain how computing innovations affect communication, interaction, and cognition. Learning Objectives
6-4: JavaScript EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
6-4: JavaScript EU 6.2 : Characteristics of the Internet influence the systems built on it. Enduring Understandings
6-4: JavaScript EU 7.1 : Computing enhances communication, interaction, and cognition. Enduring Understandings
6-5: Ajax EU 6.1 : The Internet is a network of autonomous systems. Enduring Understandings
6-6: Artificial Intelligence EU 2.3 : Models and simulations use abstraction to generate new understanding and knowledge. Enduring Understandings
6-7: Virtual and Augmented Reality EU 7.1 : Computing enhances communication, interaction, and cognition. Enduring Understandings
5-7: Cybersecurity Cyber Security and Cryptography (Link) External Resources
4-8: Version Control Digital Divide: The Technology Gap between the Rich and Poor (Link) External Resources
1-4: Data Types David's Lecture: Part 2 (Youtube) : 54:30 to 55:19 (Link) Videos
1-4: Data Types David's Lecture: Part 2 (MP4 download) : 54:30 to 55:19 (Link) Videos
1-6: Boolean Expressions and Conditionals David's Lecture: Part 2 (Youtube) : 1:29:24 to 01:33:32 (Link) Videos
1-6: Boolean Expressions and Conditionals David's Lecture: Part 2 (MP4 Download) : 1:29:24 to 01:33:32 (Link) Videos
1-7: Loops Mario (more) : for those more comfortable (Link) Programming Problems
2-0: Compiling David's Lecture: Part 3 (Youtube) : 2:03:03 to 2:09:14 (Link) Videos
2-0: Compiling David's Lecture: Part 3 (MP4 Download) : 2:03:03 to 2:09:14 (Link) Videos
2-2: Arrays and Strings David's Lecture: Part 3 (Youtube) : 46:18 to 1:01:19 (Link) Videos
2-2: Arrays and Strings David's Lecture: Part 3 (MP4 Download) : 46:18 to 1:01:19 (Link) Videos
2-2: Arrays and Strings Initials (less) : for those less comfortable (Link) Programming Problems
2-2: Arrays and Strings Initials (more) : for those more comfortable (Link) Programming Problems
3-2: Selection Sort Fifteen (Link) Programming Problems
3-4: Binary Search Find (less) : For those less comfortable (Link) Programming Problems
3-4: Binary Search Find (more) : For those more comfortable (Link) Programming Problems