Free Science and Video Lectures Online!
Free education online is possible.

Great news! New Science Site launched: Free Science Videos and Lectures

Another great news! My Programming Site launched: Good coders code, great reuse

More great news! I started my own company: Browserling - Cross-browser testing.

Saturday, February 28, 2009

Computer Science Lectures

Greetings everyone! A new month and a new post on free science online. This month I have a bunch of computer science video lectures.

Video lectures include: basics of computation theory, intro to computer science, data structures, compiler optimization, intro to computers and internet, intro to clojure, and some videos from EECS colloquium at Case Western Reserve University.


Higher Computing (University of New South Wales, by Richard Buckland, COMP1917)


Course description:
This is the introductory course for computer science at UNSW. This course consists of three strands: programming, systems, and general computer-science literacy. The programming strand is further divided into two parts. For the first half of the course we cover small scale programming, in the second half we look at how to effectively use teams to produce more substantial software. In the systems strand we will look at how computers work. Concentrating on microprocessors, memory, and machine code. In the literacy strand we will look at topics drawn from: computing history, algorithms, WWW programming, ethics and law, cryptography and security, and other topics of general interest. The strands will be covered in an intermingled fashion.

Course topics:
Higher Computing. Inside a computer. Machine Code. Simple C Program. Clarity (C programming #2). Solving Problems. Side Effects. A simple recursive function. The Amazing Alan Turing. The Turing Test. Frames. Arrays. Pass by reference. Game design. Everything you need to know about pointers. Sudoku solver. Stack Frames. eXtreme Programming. VS programming. Programming in the Large. Stress. Random Numbers. The Trouble with Concrete Types. Abstract Data Types in C. Blackadder and Baldrick. ADT. Steganography (hidden messages). Don't give up. File I/O. Linked lists. Experimenting with CMOS. Complexity & Trees. Errors, Risks, Snarks, Boojums. Taste of Graphics. Sample Tree Code: loop detection. Ethics. Hamming Error Correcting Code. Professionalism. What makes a good programmer? Learning and Teaching Computing. Coding samples.


Introduction to Computer Science (Harvard, professor David J. Malan)


Course description:
Introduction to Computer Science I is a first course in computer science at Harvard College for concentrators and non-concentrators alike. More than just teach you how to program, this course teaches you how to think more methodically and how to solve problems more effectively. As such, its lessons are applicable well beyond the boundaries of computer science itself. That the course does teach you how to program, though, is perhaps its most empowering return. With this skill comes the ability to solve real-world problems in ways and at speeds beyond the abilities of most humans.


Course topics:
How Computers Work, Binary. Introduction to Programming and Scratch. Threads and Programs with Multiple Scripts. Binary Numbers, Programming Languages, Working in Linux, and Programming in C. Secure File Transfer, Variable Types, and Arithmetic Operators. Standard Input Functions, Boolean Expressions, and Loops. Cryptography, Bugs, Integer Casting, and Functions. Local and Global Variables, the Stack, Return Values, and Arrays. Strings as Arrays, Command-Line Arguments, and more Cryptography. Run Times and Algorithms, Recursion. Sorting: Bubble Sort, Selection Sort, and Merge Sort. Hardware, Processors, and Implications for Software. Greedy Algorithms, Software Design and Debugging. Pointers. Pointers and Arrays, Dynamic Memory Allocation. Pointer Arithmetic, Structures, File I/O. Linked Lists. Inserting and Deleting Elements in Linked Lists, Doubly-Linked Lists. Hash Tables, Dealing with Collisions. Pointers to Pointers, Binary Search Tree, Tries, Heaps. Heapsort, Jeopardy. Huffman Coding Theory. Bitwise Operators, Underneath the Hood - From Code to Executable File. Dangerous Functions, Secure Code. The Internet and Webpages - HTTP and XHTML. Introduction to PHP. User Input, Setting up a Login Page, SQL. Threats. Introduction to LISP. Brief Introduction to System Programming and Machine Organization. Conclusions.


Data Structures (Berkeley, professor Paul Hilfinger)


Course description:
Fundamental dynamic data structures, including linear lists, queues, trees, and other linked structures; arrays strings, and hash tables. Storage management. Elementary principles of software engineering. Abstract data types. Algorithms for sorting and searching. Introduction to the Java programming language.


Course topics:
Developing a Simple Program. More on Simple Programs. Values and Containers. Simple Pointer Manipulation. Arrays and Objects. Object-Oriented Mechanisms. Interfaces and Abstract Classes. Abstract Methods and Classes, Continued. Examples of Interfaces. Misc. Support for Abstraction; Exceptions. Numbers. Algorithmic Analysis. Collections Overview. Paradox of Voting. Resource Curse. Getting a View - Sublists. Data Structures Exam Review. Trees. Trees, Searching. Generic Programming. Priority Queues, Range Queries. Hashing. Sorting. Balanced Search Structures. Pseudo-Random Sequences. Backtracking Search, Game Trees. Enumeration Types, Threads, and Concurrency. Graphs, Introduction. Graphs, Minimal Spanning Trees, Union-find. Dynamic Programming. Storage Management. Storage Management, Continued, Reflection. Data Structures Course Summary.



Compiler Optimization


Course description:
This course introduces students to modern techniques in efficient implementation of programming languages. Modern processors and systems are designed based on the assumption that a compiler will be able to effectively exploit architectural resources. This course will examine in detail techniques to exploit instruction level parallelism, memory hierarchy and higher level parallelism. It will examine classic static analysis approaches to these problems and introduce newer feedback directed and dynamic approaches to optimisation.


Course topics:
Scalar Optimisation - Redundant Expressions. Scalar Optimisation - Dataflow Framework and SSA. Code Generation. Instruction Scheduling. Register Allocation. Dependence Analysis. Program Transformations. Vectorisation. Parallelisation. Adaptive and Profile Directed Compilation. Iterative + Dynamic Compilation. Dynamic Compilation. Machine Learning based Compilation.


Understanding Computers and the Internet


Video course description:
This course is all about understanding: understanding what's going on inside your computer when you flip on the switch, why tech support has you constantly rebooting your computer, how everything you do on the Internet can be watched by others, and how your computer can become infected with a worm just by turning it on. In this course we demystify computers and the Internet, along with their jargon, so that students understand not only what they can do with each but also how it all works and why. Students leave this course armed with a new vocabulary and equipped for further exploration of computers and the Internet. Topics include hardware, software, the Internet, multimedia, security, website development, programming, and dotcoms. This course is designed both for those with little, if any, computer experience and for those who use a computer every day.

Course topics:
Hardware - Computation. Overview. Bits and bytes. ASCII. Processors. Motherboards: buses, connectors, ports, slots, and sockets. Memory: ROM, RAM, and cache. Secondary storage: floppy disks, hard disks (PATA and SATA), CDs, and DVDs. Virtual Memory. Expansion buses and cards: AGP, ISA, PCI, PCI Express, and SCSI. I/O devices. Peripherals. How to shop for a computer. History. The Internet - Networks: clients and servers, peer-to-peer, LANs and WLANs, the Internet, and domains. Email: addresses; IMAP, POP and SMTP; netiquette; spam; emoticons; snail mail; and listservs. SSH. The World Wide Web: URLs and HTTP. Blogs. Instant messaging. SFTP. Usenet. Network topologies. The Internet: backbones, TCP/IP, DHCP, and DNS. NAT. Ethernet: NICs, cabling, switches, routers, and access points. Wireless: IR, RF, Bluetooth, and WiFi. ISPs. Modems: dialup, cable, and DSL. Multimedia - Graphics: file formats, bitmaps and vectors, and compression. Audio: file formats and compression. Video (and audio): file formats and compression. Streaming. Security - Threats to privacy: cookies, forms, logs, and data recovery. Security risks: packet sniffing, passwords, phishing, hacking, viruses and worms, spyware, and zombies. Piracy: WaReZ and cracking. Defenses: scrubbing, firewalls, proxy servers, VPNs, cryptography, virus scanners, product registration and activation. Website Development - Webservers: structure, permissions, and implementations. Static webpages: XHTML, well-formedness, and validity. Dynamic webpages: SSIs, DHTML, AJAX, CGI, ASPs, and JSPs. Programming - Pseudocode. Constructs: instructions, variables, conditions, branches, and loops. Languages: interpreted and compiled. Scratch.


Introduction to Clojure


Clojure video description:
Ten videos on Clojure. Presents the big ideas in Clojure, a new dialect of Lisp. Assumes basic knowledge of Java but not Lisp.



Clojure for Lisp Programmers



Clojure for Java Programmers



Clojure Data Structures



Misc. Clojure Video Lectures



Cryptography - Science or Magic?


Lecture description:
Examples of the "tricks" that can be performed with modern cryptographic techniques will be presented and each trick explored to see whether it is "science" (i.e., it can be proved to do what it seems to do) or "magic" (i.e., what it seems to do is, or may be, only an illusion). The tricks considered will include no-break cryptography, no-leak secret sharing, no-key cryptography, no-see signatures, no-watch coin tossing, and no-knowledge proofs.



The Akamai Story: From Theory to Practice


Lecture description:
If you have ever wondered what it means for a website to become "Akamaized," this lecture about the company's origins explains much of the mystery. But before there was an Akamai, there were research problems—lots of them. Nearly 15 years ago, Tim Berners-Lee, architect of the World Wide Web, asked Tom Leighton to think about solutions to future -- and now familiar-- Internet issues: bottlenecks that form when users flood to a particular site, often along a single Internet supply line. Leighton's team generated algorithms (and publications and advanced degrees) while figuring out the fastest means to move information from here to there. Along the way, they learned some tricks to outsmart Internet service providers who slow traffic down by bumping competitors' data from their network lines. Akamai (which means clever and cool in Hawaiian) got its start in the MIT 50k competition, and took off when some big name clients decided to give the company a trial run. Paramount, ESPN, Apple, and Microsoft recognized the importance of Akamai's Internet optimization strategy: distributing servers and routing software to the “edge” or end users, rather than centralizing services. Akamai survived the stock market “bubble” and collapse, and now serves a diverse global market.



EECS Colloquium at Case Western Reserve University




Have fun watching all these computer science videos! Until next time.
Don't forget to check out the right menu bar for more lectures!


Related Posts
  • Free Computer Science Video Lecture Courses
    (Courses include web application development, lisp/scheme programming, data structures, algorithms, machine structures, programming languages, principles of software engineering, object oriented programming in java, systems, computer system engineering, computer architecture, operating systems, database management systems, performance analysis, cryptography, artificial intelligence)

  • Programming Lectures and Tutorials
    (Lectures include topics such as software engineering, javascript programming, overview of firefox's firebug extension, document object model, python programming, design patterns in python, java programming, delphi programming, vim editor and sqlite database design)

  • Programming, Networking Free Video Lectures and Other Interesting Ones
    (Includes lectures on Python programming language, Common Lisp, Debugging, HTML and Web, BGP networking, Building scalable systems, and as a bonus lecture History of Google)

  • More Mathematics and Theoretical Computer Science Video Lectures
    (Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)

  • More Mathematics and Theoretical Computer Science Video Lectures
    (Includes algebra, elementary statistics, applied probability, finite mathematics, trigonometry with calculus, mathematical computation, pre-calculus, analytic geometry, first year calculus, business calculus, mathematical writing (by Knuth), computer science problem seminar (by Knuth), dynamic systems and chaos, computer musings (by Knuth) and other Donald E. Knuth lectures)

  • Computer Security Videos
    (Includes assembly programming videos, debugging videos with gdb, socket programming videos, buffer overflow videos, reverse engineering videos, some cisco security training video)

  • Computer Science Courses
    (Includes introduction to computer science and computing systems, computational complexity and quantum computing, the c programming language, multicore programming, statistics and data mining, combinatorics, software testing, evolutionary computation, deep learning, data structures and algorithms and computational origami.)

6 Comments:

Post a Comment

<< Home