Programming Abstractions
http://deimos3.apple.com/WebObjects/Core.woa/Browse/itunes.stanford.edu-dz.4331558178.04331558180
Julie ZelenskiProgramming AbstractionsTechnologyStanfordENnoThis course is the natural successor to Programming Methodology and covers such advanced programming topics as recursion, algorithmic analysis, and data abstraction using the C++ programming language, which is similar to both C and Java. If you've taken the Computer Science AP exam and done well (scored 4 or 5) or earned a good grade in a college course, Programming Abstractions may be an appropriate course for you to start with, but often Programming Abstractions (Accelerated) is a better choice. Programming Abstractions assumes that you already have familiarity with good programming style and software engineering issues (at the level of Programming Methodology), and that you can use this understanding as a foundation on which to tackle new topics in programming and data abstraction.
Topics: Abstraction and its relation to programming. Software engineering principles of data abstraction and modularity. Object-oriented programming, fundamental data structures (such as stacks, queues, sets) and data-directed design. Recursion and recursive data structures (linked lists, trees, graphs). Introduction to time and space complexity analysis. Uses the programming language C++ covering its basic facilities.false1. Programming Abstractions Lecture 1Julie Zelenski gives an introduction to the course, recursion, algorithms, dynamic data structures and data abstraction; she also introduced the significance of programming and gives her opinion of what makes 106B "great;" C++ is introduced, too.Julie Zelenski gives an introduction to the course, recursion, algorithms, dynamic data structures and data abstraction; she also introduced the significance of programming and gives her opinion of what makes 106B "great;" C++ is introduced, too.4331558182Wed, 23 Jul 2008 08:23:11 GMTJulie Zelenski0:43:02TechnologyStanfordno12. Programming Abstractions Lecture 2Julie describes the similarities between C++ and Java, which include general syntax, primitive variable types, operators and control structures; she proceeds to go through the code of a basic C++ program and explains each individual piece of code.Julie describes the similarities between C++ and Java, which include general syntax, primitive variable types, operators and control structures; she proceeds to go through the code of a basic C++ program and explains each individual piece of code.4331558188Wed, 23 Jul 2008 08:21:10 GMTJulie Zelenski0:43:47TechnologyStanfordno23. Programming Abstractions Lecture 3Julie goes over C++ libraries and explains what they are and how they are useful. She continues to introduce C++ basics, including strings, various operators on strings and comparing two strings.Julie goes over C++ libraries and explains what they are and how they are useful. She continues to introduce C++ basics, including strings, various operators on strings and comparing two strings.4331558194Wed, 23 Jul 2008 08:19:13 GMTJulie Zelenski0:44:39TechnologyStanfordno34. Programming Abstractions Lecture 4Julie continues to cover the console input/output in C++ and discusses the file I/O and changing between an old style string to a C++ string format. She also begins to go over stream operations and their basic use as well as object oriented programming.Julie continues to cover the console input/output in C++ and discusses the file I/O and changing between an old style string to a C++ string format. She also begins to go over stream operations and their basic use as well as object oriented programming.4331558200Wed, 23 Jul 2008 08:17:10 GMTJulie Zelenski0:50:26TechnologyStanfordno45. Programming Abstractions Lecture 5Julie discusses the use of templates, vectors and template specialization. She then goes through an example of code line by line explaining each part in detail. Finally, she goes on to explain what grid interfaces are.Julie discusses the use of templates, vectors and template specialization. She then goes through an example of code line by line explaining each part in detail. Finally, she goes on to explain what grid interfaces are.4331558206Wed, 23 Jul 2008 08:13:11 GMTJulie Zelenski0:45:29TechnologyStanfordno56. Programming Abstractions Lecture 6In the sixth lecture, Julie discusses sequential containers, associative containers, map classes/interfaces, iteration over maps and set classes. She explains why set classes are different and sometimes better to use.In the sixth lecture, Julie discusses sequential containers, associative containers, map classes/interfaces, iteration over maps and set classes. She explains why set classes are different and sometimes better to use.4331558212Wed, 23 Jul 2008 08:09:57 GMTJulie Zelenski0:43:00TechnologyStanfordno67. Programming Abstractions Lecture 7Julie explains the idea of functions as data and specific plot functions and continues onto client feedback functions and ADTs. She then delves into recursion and solving problems using recursion.Julie explains the idea of functions as data and specific plot functions and continues onto client feedback functions and ADTs. She then delves into recursion and solving problems using recursion.4331558218Wed, 23 Jul 2008 08:07:16 GMTJulie Zelenski0:47:31TechnologyStanfordno78. Programming Abstractions Lecture 8Julie talks about solving problems recursively. She covers functional recursion with the simple example of writing an exponential function using recursion.Julie talks about solving problems recursively. She covers functional recursion with the simple example of writing an exponential function using recursion.4331558224Wed, 23 Jul 2008 08:04:02 GMTJulie Zelenski0:42:36TechnologyStanfordno89. Programming Abstractions Lecture 9Julie goes over recursion and the proper ways to solve problems recursively. She continues with the example of a program that draws a fractal image and explains a Mandarin code to illustrate the different possibilities of drawing different pictures.Julie goes over recursion and the proper ways to solve problems recursively. She continues with the example of a program that draws a fractal image and explains a Mandarin code to illustrate the different possibilities of drawing different pictures.4331558230Mon, 11 Aug 2008 17:12:07 GMTJulie Zelenski0:48:03TechnologyStanfordno910. Programming Abstractions Lecture 10Julie explains procedural recursion and introduces permute code. She goes through another example of recursive code line by line, explaining each component. Recursive backtracking and it's usefulness are discussed.Julie explains procedural recursion and introduces permute code. She goes through another example of recursive code line by line, explaining each component. Recursive backtracking and it's usefulness are discussed.4331558236Wed, 23 Jul 2008 19:58:20 GMTJulie Zelenski0:47:01TechnologyStanfordno1011. Programming Abstractions Lecture 11Julie continues with recursive backtracking and introduces pointers and recursive data. Following, she focuses on solving the problems rather than the exact code and later uses the example of a program that will solve a Sudoku puzzle.Julie continues with recursive backtracking and introduces pointers and recursive data. Following, she focuses on solving the problems rather than the exact code and later uses the example of a program that will solve a Sudoku puzzle.4331558242Wed, 23 Jul 2008 19:56:09 GMTJulie Zelenski0:47:47TechnologyStanfordno1112. Programming Abstractions Lecture 12Julie continues to go over pointers and moves on to recursive data and linked lists. She explains the basics of pointers with two variables pointing to the same address.Julie continues to go over pointers and moves on to recursive data and linked lists. She explains the basics of pointers with two variables pointing to the same address.4331558248Wed, 23 Jul 2008 19:52:28 GMTJulie Zelenski0:41:44TechnologyStanfordno1213. Programming Abstractions Lecture 13Julie introduces linked lists and continues to discuss recursive data. She goes line by line through an example code she writes during the lecture. She then inserts variables in an order; she uses the example of an address book to explain this.Julie introduces linked lists and continues to discuss recursive data. She goes line by line through an example code she writes during the lecture. She then inserts variables in an order; she uses the example of an address book to explain this.4331558254Wed, 23 Jul 2008 19:49:41 GMTJulie Zelenski0:51:34TechnologyStanfordno1314. Programming Abstractions Lecture 14Julie starts off with algorithm analysis, the big-O notation and introduces sorting. She begins off with a brief overview of what algorithm analysis is and how to utilize it. Later, she continues to go through recursive algorithms and their uses.Julie starts off with algorithm analysis, the big-O notation and introduces sorting. She begins off with a brief overview of what algorithm analysis is and how to utilize it. Later, she continues to go through recursive algorithms and their uses.4331558260Wed, 23 Jul 2008 19:46:07 GMTJulie Zelenski0:49:32TechnologyStanfordno1415. Programming Abstractions Lecture 15Julie continues to cover sorting. She begins with an example of a selection sorting code and a graphic demo of the code in progress. Thereafter, she explains the different methods available to sort different kinds of data.Julie continues to cover sorting. She begins with an example of a selection sorting code and a graphic demo of the code in progress. Thereafter, she explains the different methods available to sort different kinds of data.4331558266Wed, 23 Jul 2008 19:43:48 GMTJulie Zelenski0:47:19TechnologyStanfordno1516. Programming Abstractions Lecture 16Julie continues with sorting, specifically quadratic and linearithmic sorting methods, and then explains how to reasonably partition data sets for quicksort. Thereafter, she proceeds to go over different functional templates for sorting algorithms.Julie continues with sorting, specifically quadratic and linearithmic sorting methods, and then explains how to reasonably partition data sets for quicksort. Thereafter, she proceeds to go over different functional templates for sorting algorithms.4331558272Wed, 23 Jul 2008 19:40:56 GMTJulie Zelenski0:47:34TechnologyStanfordno1617. Programming Abstractions Lecture 17Julie continues to go over sort templates and callback functions, then shows a final version of the sort template, one that will be extremely useful in the next homework assignment.Julie continues to go over sort templates and callback functions, then shows a final version of the sort template, one that will be extremely useful in the next homework assignment.4331558278Wed, 23 Jul 2008 19:38:42 GMTJulie Zelenski0:44:30TechnologyStanfordno1718. Programming Abstractions Lecture 18Julie introduces the 'implement vector' and discusses ADTs (abstract data types) in more detail. She then develops a Vector from the ground up, explaining each step as she goes.Julie introduces the 'implement vector' and discusses ADTs (abstract data types) in more detail. She then develops a Vector from the ground up, explaining each step as she goes.4331558284Wed, 23 Jul 2008 19:36:38 GMTJulie Zelenski0:50:53TechnologyStanfordno1819. Programming Abstractions Lecture 19Julie reiterates the rules for template implementers and continues by coding live with the class explaining each line of code in detail after writing it. Throughout the process of writing the code, she encounters several errors and has to debug it.Julie reiterates the rules for template implementers and continues by coding live with the class explaining each line of code in detail after writing it. Throughout the process of writing the code, she encounters several errors and has to debug it.4331558290Wed, 23 Jul 2008 19:34:17 GMTJulie Zelenski0:41:26TechnologyStanfordno1920. Programming Abstractions Lecture 20Julie continues discussing Vector and moves on to stack and queue, covering chapter ten in the course textbook. She goes over several rules for templates again to reinforce how important they are.Julie continues discussing Vector and moves on to stack and queue, covering chapter ten in the course textbook. She goes over several rules for templates again to reinforce how important they are.4331558296Wed, 23 Jul 2008 19:32:18 GMTJulie Zelenski0:50:59TechnologyStanfordno2021. Programming Abstractions Lecture 21Julie talks about the buffer version of vector vs. stack and follows this with an example of cursor design. She also talks about linked list insertion and deletion. Cursor movement is the next topic covered.Julie talks about the buffer version of vector vs. stack and follows this with an example of cursor design. She also talks about linked list insertion and deletion. Cursor movement is the next topic covered.4331558302Wed, 23 Jul 2008 19:29:58 GMTJulie Zelenski0:46:01TechnologyStanfordno2122. Programming Abstractions Lecture 22Julie discusses map as a vector and describes a different, possibly better, strategy. The basics of trees and their usefulness and how they can be used with binary search is then introduced.Julie discusses map as a vector and describes a different, possibly better, strategy. The basics of trees and their usefulness and how they can be used with binary search is then introduced.4331558308Wed, 23 Jul 2008 19:27:50 GMTJulie Zelenski0:49:44TechnologyStanfordno2223. Programming Abstractions Lecture 23Julie shows a YouTube video of Barack Obama answering a question about what kind of sorting algorithm he would use to sort a list of data. She also gives several examples of problems that are capable of being solved with sorting.Julie shows a YouTube video of Barack Obama answering a question about what kind of sorting algorithm he would use to sort a list of data. She also gives several examples of problems that are capable of being solved with sorting.4331558314Wed, 23 Jul 2008 19:25:35 GMTJulie Zelenski0:45:50TechnologyStanfordno2324. Programming Abstractions Lecture 24Julie introduces hashing and it's uses in search and retrieval; map implementations and the different kinds of search algorithms are then discussed. Thereafter she explains that logarithmic searches are relatively fast and often finish the search.Julie introduces hashing and it's uses in search and retrieval; map implementations and the different kinds of search algorithms are then discussed. Thereafter she explains that logarithmic searches are relatively fast and often finish the search.4331558320Wed, 23 Jul 2008 19:23:22 GMTJulie Zelenski0:50:18TechnologyStanfordno2425. Programming Abstractions Lecture 25Julie examines a case study and opening up the lexicon file, which is complicated; she walks the students through the code and explains why she wrote it as she did as opposed to a sorted vector or binary search tree.Julie examines a case study and opening up the lexicon file, which is complicated; she walks the students through the code and explains why she wrote it as she did as opposed to a sorted vector or binary search tree.4331558326Wed, 23 Jul 2008 19:20:12 GMTJulie Zelenski0:50:35TechnologyStanfordno2526. Programming Abstractions Lecture 26Julie ties up the "loose ends" of the course: after a general review of the concepts covered in the course, she asks which of two examples is the better. She then covers manipulation of dynamic data structures (lists, trees, graphs).Julie ties up the "loose ends" of the course: after a general review of the concepts covered in the course, she asks which of two examples is the better. She then covers manipulation of dynamic data structures (lists, trees, graphs).4331558332Wed, 23 Jul 2008 19:17:54 GMTJulie Zelenski0:49:04TechnologyStanfordno2627. Programming Abstractions Lecture 27In the final lecture, Keith talks about the C++ programming language. He starts of with C++ history, C++ without CS 106 and what comes next.In the final lecture, Keith talks about the C++ programming language. He starts of with C++ history, C++ without CS 106 and what comes next.4331558338Wed, 23 Jul 2008 19:14:44 GMTJulie Zelenski0:41:33TechnologyStanfordno27