Missed lectures or hate teachers? Or want to study computer science courses without going to university?…You can study anytime anywhere because there are number of free online computer science courses available on internet that are very interactive.
Here is the list of 45 free online computer science courses that are designed by teaching experts from best universities of the world (almost the whole graduation!).
Complete set of course materials. (Includes all available handouts, assignments, exams, and computer software.
This 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.
Advanced memory management features of C and C++; the differences between imperative and object-oriented paradigms. The functional paradigm (using LISP) and concurrent programming (using C and C++). Brief survey of other modern languages such as Python, Objective C, and C#.
The purpose of this course is to introduce you to basics of modeling, design, planning, and control of robot systems. In essence, the material treated in this course is a brief survey of relevant results from geometry, kinematics, statics, dynamics, and control.
The course is presented in a standard format of lectures, readings and problem sets. There will be an in-class midterm and final examination. These examinations will be open book. Lectures will be based mainly, but not exclusively, on material in the Lecture Notes book. Lectures will follow roughly the same sequence as the material presented in the book, so it can be read in anticipation of the lectures
This course is designed to introduce students to the fundamental concepts and ideas in natural language processing (NLP), and to get them up to speed with current research in the area. It develops an in-depth understanding of both the algorithms available for the processing of linguistic information and the underlying computational properties of natural languages. Wordlevel, syntactic, and semantic processing from both a linguistic and an algorithmic perspective are considered. The focus is on modern quantitative techniques in NLP: using large corpora, statistical models for acquisition, disambiguation, and parsing. Also, it examines and constructs representative systems.
This course provides a broad introduction to machine learning and statistical pattern recognition.
The goals for the course are to gain a facility with using the Fourier transform, both specific techniques and general principles, and learning to recognize when, why, and how it is used. Together with a great variety, the subject also has a great coherence, and the hope is students come to appreciate both.
Introduction to applied linear algebra and linear dynamical systems, with applications to circuits, signal processing, communications, and control systems.
Concentrates on recognizing and solving convex optimization problems that arise in engineering. Convex sets, functions, and optimization problems. Basics of convex analysis. Least-squares, linear and quadratic programs, semidefinite programming, minimax, extremal volume, and other problems. Optimality conditions, duality theory, theorems of alternative, and applications. Interiorpoint methods. Applications to signal processing, control, digital and analog circuit design, computational geometry, statistics, and mechanical engineering.
Continuation of Convex Optimization I. Subgradient, cutting-plane, and ellipsoid methods. Decentralized convex optimization via primal and dual decomposition. Alternating projections. Exploiting problem structure in implementation. Convex relaxations of hard problems, and global optimization via branch & bound. Robust optimization. Selected applications in areas such as control, circuit design, signal processing, and communications. Course requirements include a substantial project.
This subject is aimed at students with little or no programming experience. It aims to provide students with an understanding of the role computation can play in solving problems. It also aims to help students, regardless of their major, to feel justifiably confident of their ability to write small programs that allow them to accomplish useful goals. The class will use the Python™ programming language.
This course provides an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasizes the relationship between algorithms and programming, and introduces basic performance measures and analysis techniques for these problems.
This course explores the ultimate limits to communication and computation, with an emphasis on the physical nature of information and information processing. Topics include: information and computation, digital signals, codes and compression, applications such as biological representations of information, logic circuits, computer architectures, and algorithmic information, noise, probability, error correction, reversible and irreversible operations, physics of computation, and quantum computation. The concept of entropy applied to channel capacity and to the second law of thermodynamics.
This course teaches simple reasoning techniques for complex phenomena: divide and conquer, dimensional analysis, extreme cases, continuity, scaling, successive approximation, balancing, cheap calculus, and symmetry. Applications are drawn from the physical and biological sciences, mathematics, and engineering. Examples include bird and machine flight, neuron biophysics, weather, prime numbers, and animal locomotion. Emphasis is on low-cost experiments to test ideas and on fostering curiosity about phenomena in the world.
This course provides a challenging introduction to some of the central ideas of theoretical computer science. It attempts to present a vision of “computer science beyond computers”: that is, CS as a set of mathematical tools for understanding complex systems such as universes and minds. Beginning in antiquity—with Euclid’s algorithm and other ancient examples of computational thinking—the course will progress rapidly through propositional logic, Turing machines and computability, finite automata, Gödel’s theorems, efficient algorithms and reducibility, NP-completeness, the P versus NP problem, decision trees and other concrete computational models, the power of randomness, cryptography and one-way functions, computational theories of learning, interactive proofs, and quantum computing and the physical limits of computation. Class participation is essential, as the class will include discussion and debate about the implications of many of these ideas
This course is an introduction to Java™ programming and software engineering. It is designed for those who have little or no programming experience in Java and covers concepts useful to 6.005. The focus is on developing high quality, working software that solves real problems. Students will learn the fundamentals of Java, and how to use 3rd party libraries to get more done with less work. Each session includes one hour of lecture and one hour of assisted lab work. Short labs are assigned with each lecture.
This course provides an aggressively gentle introduction to MATLAB®. It is designed to give students fluency in MATLAB, including popular toolboxes. The course consists of interactive lectures with a computer running MATLAB for each student. Problem-based MATLAB assignments are given which require significant time on MATLAB.
This course is designed for undergraduate and graduate students in science, social science and engineering programs who need to learn fundamental programming skills quickly but not in great depth. The course is ideal for undergraduate research positions or summer jobs requiring C++. It is not a class for experienced programmers in C++. Students with no programming background are welcome. Topics include control structures, arrays, functions, classes, objects, file handling, and simple algorithms for common tasks.
This course teaches the art of guessing results and solving problems without doing a proof or an exact calculation. Techniques include extreme-cases reasoning, dimensional analysis, successive approximation, discretization, generalization, and pictorial analysis. Applications include mental calculation, solid geometry, musical intervals, logarithms, integration, infinite series, solitaire, and differential equations. This course is offered during the Independent Activities Period (IAP), which is a special 4-week term at MIT that runs from the first week of January until the end of the month.
The course serves as an introductory course in parallel programming. It offers a series of lectures on parallel programming concepts as well as a group project providing hands-on experience with parallel programming. The students will have the unique opportunity to use the cutting-edge PLAYSTATION 3 development platform as they learn how to design and implement exciting applications for multicore architectures. At the end of the course, students will have an understanding of:
1) Fundamental design philosophies that multicore architectures address.
2) Parallel programming philosophies and emerging best practices.
This course will provide a gentle introduction to programming using Python™ for highly motivated students with little or no prior experience in programming computers. The course will focus on planning and organizing programs, as well as the grammar of the Python programming language. Lectures will be interactive featuring in-class exercises with lots of support from the course staff.
6.270 is a hands-on, learn-by-doing class, in which participants design and build a robot that will play in a competition at the end of January. The goal for the students is to design a machine that will be able to navigate its way around the playing surface, recognize other opponents, and manipulate game objects. Unlike the machines in Design and Manufacturing I (2.007), 6.270 robots are totally autonomous, so once a round begins, there is no human intervention.
6.837 offers an introduction to computer graphics hardware, algorithms, and software. Topics include: line generators, affine transformations, line and polygon clipping, splines, interactive techniques, perspective projection, solid modelling, hidden surface algorithms, lighting models, shading, and animation. Substantial programming experience is required. This course is worth 6 Engineering Design Points.
NextLab is a hands-on year-long design course in which students research, develop and deploy mobile technologies for the next billion mobile users in developing countries. Guided by real-world needs as observed by local partners, students work in multidisciplinary teams on term-long projects, closely collaborating with NGOs and communities at the local level, field practitioners, and experts in relevant fields.
This course focuses on the algorithmic and machine learning foundations of computational biology, combining theory with practice. We study the principles of algorithm design for biological datasets, and analyze influential problems and techniques. We use these to analyze real datasets from large-scale studies in genomics and proteomics. The topics covered include:
- Genomes: Biological Sequence Analysis, Hidden Markov Models, Gene Finding, RNA Folding, Sequence Alignment, Genome Assembly.
- Networks: Gene Expression Analysis, Regulatory Motifs, Graph Algorithms, Scale-free Networks, Network Motifs, Network Evolution.
- Evolution: Comparative Genomics, Phylogenetics, Genome Duplication, Genome Rearrangements, Evolutionary Theory, Rapid Evolution.
Basic concept of computer science The C programming language
This course is offered to undergraduates and is an elementary discrete mathematics course oriented towards applications in computer science and engineering. Topics covered include: formal logic notation, induction, sets and relations, permutations and combinations, counting principles, and discrete probability.
This unit will introduce you to some ideas about how information and communiction technologies (ICTs) systems work. We will look at how ICT systems convey, store and manipulate data, and how they process…
From Issac Asimov’s I Robot to George Lucas’ R2D2, robots have been part of our popular culture for the last century. In this introductory programming course, we use Lego Mindstorm robots to illustrate the fundamental concepts in computer programming and problem solving. Students get a chance to explore Robotics and Computing Science in a fun and stimulating way.
Course for students in Computer Information Systems or in Computer and Information Technologies programs. This course will instruct students in system administration topics, including computer hardware selection, user account management, file system optimization, and security. Basic system services such as FTP, WWW, email, printer, and DBMS will also be covered. Students will be required to install, configure, and test the services in a server environment. Three lecture hours per week.
In this OpenUW course, we cover the basic structure of an HTML document, what HTML tags look like, the fundamental document structure, and basic tags found in nearly all HTML documents.
In this course you will learn how to use application software. This course will help you learn how to use Internet, word processing software, spreadsheet software, presentation software and communications applications. You will also learn how to integrate MS Office 2007 applications, including linking and embedding files. Editing and formatting these documents helps a business to create more professional looking documents.
This course extends the student’s basic procedural design and programming knowledge into the object oriented paradigm. The student will be expected to learn and apply the basic concepts of object oriented design and programming, i.e. abstraction, inheritance and polymorphism, in the context of the C++ language. Key software engineering principles such as decomposition and component re-use shall also be emphasized.
Detailed concepts of Operating Systems and System Programming
The core concepts of data structuring with inspiring lectures
An introduction to the main techniques of Artifical Intelligence: state-space search methods, semantic networks, theorem-proving and production rule systems. Important applications of these techniques are presented. Students are expected to write programs exemplifying some of techniques taught, using the LISP lanuage.
Information theory explores the fundamental limits of the representation and transmission of information. We will focus on the definition and implications of (information) entropy, the source coding theorem, and the channel coding theorem. These concepts provide a vital background for researchers in the areas of data compression, signal processing, controls, and pattern recognition.
Communication networks are used to transfer valuable and confidential information for a variety of purposes. As a consequence, they attract the attention of people who intend to steal or misuse information,…
Discrete mathematics, also called finite mathematics or decision mathematics, is the study of mathematical structures that are fundamentally discrete in the sense of not supporting or requiring the notion of continuity. Objects studied in finite mathematics are largely countable sets such as integers, finite graphs, and formal languages. Concepts and notations from discrete mathematics are useful to study or describe objects or problems in computer algorithms and programming languages.
Deep analysis of computer language syntax and structures
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.
This course is offered to undergraduates and introduces basic mathematical models of computation and the finite representation of infinite objects. The course is slower paced than 6.840J/18.404J. Topics covered include: finite automata and regular languages, context-free languages, Turing machines, partial recursive functions, Church’s Thesis, undesirability, reducibility and completeness, time complexity and NP-completeness, probabilistic computation, and interactive proof systems.
Basic concepts of operating systems and system programming. Utility programs, subsystems, multiple-program systems. Processes, interposes communication, and synchronization. Memory allocation, segmentation, paging. Loading and linking, libraries. Resource allocation, scheduling, performance evaluation. File systems, storage devices, I/O systems. Protection, security, and privacy.
This course examines how randomization can be used to make algorithms simpler and more efficient via random sampling, random selection of witnesses, symmetry breaking, and Markov chains. Topics covered include: randomized computation; data structures (hash tables, skip lists); graph algorithms (minimum spanning trees, shortest paths, minimum cuts); geometric algorithms (convex hulls, linear programming in fixed or arbitrary dimension); approximate counting; parallel algorithms; online algorithms; derandomization techniques; and tools for probabilistic analysis of algorithms.