background preloader

CS Fundas

Facebook Twitter

Fundas of electrical engineering. About the Course The course focuses on the creation, manipulation, transmission, and reception of information by electronic means.

fundas of electrical engineering

The topics covered include elementary signal theory; time- and frequency-domain analysis of signals; conversion of analog signals to a digital form; and how information can be represented with signals. Signal processing, both analog and digital, allow information to be extracted and manipulated. The course then turns to information theory, which demonstrates the technological advantages of digital transmission. The course text was written by the instructor for this course and is entirely online. Course Syllabus Elements of signal and system theoryWeek 1: Digital and analog information; block diagrams: sources, systems, sinks. Analog Signal Processing Weeks 2-3: Representation of signals by electrical quantities (electric currents and electromagnetic radiation). Frequency Domain Ideas Weeks 4-5: Fourier series and Fourier transforms.

Digital signal processing. About the Course The goal of the course is to develop a complete working set of digital signal processing notions from the ground up.

digital signal processing

DSP is arguably at the heart of the “digital revolution” that, in the space of just a few decades, has enabled unprecedented levels of interpersonal communication and of information availability. In the class, starting from the basic definitions of a discrete-time signal, we will work our way through Fourier analysis, filter design, sampling, interpolation and quantization to build a DSP toolset complete enough to analyze a practical communication system in detail.

Hands-on examples and demonstration will be routinely used to close the gap between theory and practice. Course Format The class will consist of videolectures, each approximately 45 minutes in length; videos will contain some interactive quiz questions. Computer Science 101. Programming languages. Introduction to Systematic Program Design. About the Course Phones, diesel engines, animated newspapers, medical devices, games, political campaigns, medical research, mining, transportation systems, ... and so on, and on, and on... every day more of the world around us is at least partly run by computer programs.

Introduction to Systematic Program Design

This means that being able to design programs - or at least be able to work with people who design programs - is becoming a more and more valuable skill. To build your own programs you need to know two things: how to use the specific programming language and libraries needed, and the more general skill of how to design a program. This course presents a design method that will enable you to approach the design of complex programs systematically. The method will work for programs in this course as well as hard to design programs you develop in the future. In the first course -- Part 1 -- we use a simple teaching language to cover the core of the design method.

Course Syllabus Week Two: Representing information as data. Design of Computer Programs Course (CS212) When does the course begin?

Design of Computer Programs Course (CS212)

This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course. How long will the course be available? This class will always be available! How do I know if this course is for me? Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. Can I skip individual videos? Yes! How much does this cost? Programming Languages Course (CS262) When does the course begin?

Programming Languages Course (CS262)

This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course. Algorithms, Part I. Algorithms, Part II. What algorithms and data structures are covered?

Algorithms, Part II

Part I focuses on elementary data structures, sorting, and searching. Topics include union-find, binary search, stacks, queues, bags, insertion sort, selection sort, shellsort, quicksort, 3-way quicksort, mergesort, heapsort, binary heaps, binary search trees, red-black trees, separate chaining and linear probing hash tables, Graham scan, and kd-trees.Part II focuses on graph and string-processing algorithms.

Topics include depth-first search, breadth-first search, topological sort, Kosaraju-Sharir, Kruskal, Prim, Dijkistra, Bellman-Ford, Ford-Fulkerson, LSD radix sort, MSD radix sort, 3-way radix quicksort, multiway tries, ternary search tries, Knuth-Morris-Pratt, Boyer-Moore, Rabin-Karp, regular expression matching, run-length coding, Huffman coding, LZW compression, and the Burrows-Wheeler transform.Are there any associated resources available on the web?

Yes. It depends on your background. I am/was not a computer science major. Design and Analysis of Algorithms I. About the Course In this course you will learn several fundamental principles of algorithm design.

Design and Analysis of Algorithms I

You'll learn the divide-and-conquer design paradigm, with applications to fast sorting, searching, and multiplication. You'll learn several blazingly fast primitives for computing on graphs, such as how to compute connectivity information and shortest paths. Finally, we'll study how allowing the computer to "flip coins" can lead to elegant and practical algorithms and data structures. Algorithms: design and analysis, part2. In this course you will learn several fundamental principles of advanced algorithm design.

algorithms: design and analysis, part2

You'll learn the greedy algorithm design paradigm, with applications to computing good network backbones (i.e., spanning trees) and good codes for data compression. You'll learn the tricky yet widely applicable dynamic programming algorithm design paradigm, with applications to routing in the Internet and sequencing genome fragments. You’ll learn what NP-completeness and the famous “P vs. NP” problem mean for the algorithm designer.

Finally, we’ll study several strategies for dealing with hard (i.e., NP-complete problems), including the design and analysis of heuristics. Weeks 1 and 2: The greedy algorithm design paradigm. Weeks 3 and 4: The dynamic programming design paradigm. Weeks 5 and 6: Intractable problems and what to do about them. As a student enrolled in this course, you will have free access to selected chapters and content for the duration of the course. Automata. About the Course I am pleased to be able to offer free over the Internet a course on Automata Theory, based on the material I have taught periodically at Stanford in the course CS154.

Automata

Participants have access to screencast lecture videos, are given quiz questions, assignments and exams, receive regular feedback on progress, and can participate in a discussion forum. Those who successfully complete the course will receive a statement of accomplishment. You will need a decent Internet connection for accessing course materials, but should be able to watch the videos on your smartphone. Compilers. This course will discuss the major ideas used today in the implementation of programming language compilers, including lexical analysis, parsing, syntax-directed translation, abstract syntax trees, types and type checking, intermediate languages, dataflow analysis, program optimization, code generation, and runtime systems.

compilers

As a result, you will learn how a program written in a high-level language designed for humans is systematically translated into a program written in low-level assembly more suited to machines. Along the way we will also touch on how programming languages are designed, programming language semantics, and why there are so many different kinds of programming languages. The course lectures will be presented in short videos. Software Testing Course (CS258) Software Testing How to Make Software Fail Intermediate Approx. 1 month Assumes 6hr/wk (work at your own pace) Software Debugging Course (CS259) When does the course begin? This class is self paced. You can begin whenever you like and then follow your own pace. It’s a good idea to set goals for yourself to make sure you stick with the course.

How long will the course be available? This class will always be available! How do I know if this course is for me? Take a look at the “Class Summary,” “What Should I Know,” and “What Will I Learn” sections above. Can I skip individual videos? Yes! How much does this cost? It’s completely free! What are the rules on collaboration? Collaboration is a great way to learn. Computer Architecture. The Hardware/Software Interface. Introduction to Logic.