60 Free Online Courses To Learn Computer Science on Coursera

Quick Code
Quick Code
Published in
45 min readJun 21, 2018

Many courses on Coursera are still free. To get these free courses, when you click on the enroll button, you will see two options. Select “Full Course, No Certificate” option to get the course for free.You don’t need to do any audit.

In this series, we have collected all the free courses on computer science which have this option so anyone can access them for free. The list is as follow:

1. Algorithms, Part I

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

2. Algorithms, Part II

This course covers the essential information that every serious programmer needs to know about algorithms and data structures, with emphasis on applications and scientific performance analysis of Java implementations. Part I covers elementary data structures, sorting, and searching algorithms. Part II focuses on graph- and string-processing algorithms.

3. Machine Learning

Machine learning is the science of getting computers to act without being explicitly programmed. In the past decade, machine learning has given us self-driving cars, practical speech recognition, effective web search, and a vastly improved understanding of the human genome. Machine learning is so pervasive today that you probably use it dozens of times a day without knowing it. Many researchers also think it is the best way to make progress towards human-level AI. In this class, you will learn about the most effective machine learning techniques, and gain practice implementing them and getting them to work for yourself. More importantly, you’ll learn about not only the theoretical underpinnings of learning, but also gain the practical know-how needed to quickly and powerfully apply these techniques to new problems. Finally, you’ll learn about some of Silicon Valley’s best practices in innovation as it pertains to machine learning and AI.

This course provides a broad introduction to machine learning, datamining, and statistical pattern recognition. Topics include: (i) Supervised learning (parametric/non-parametric algorithms, support vector machines, kernels, neural networks). (ii) Unsupervised learning (clustering, dimensionality reduction, recommender systems, deep learning). (iii) Best practices in machine learning (bias/variance theory; innovation process in machine learning and AI). The course will also draw from numerous case studies and applications, so that you’ll also learn how to apply learning algorithms to building smart robots (perception, control), text understanding (web search, anti-spam), computer vision, medical informatics, audio, database mining, and other areas.

4. Cryptography I

Cryptography is an indispensable tool for protecting information in computer systems. In this course you will learn the inner workings of cryptographic systems and how to correctly use them in real-world applications. The course begins with a detailed discussion of how two parties who have a shared secret key can communicate securely when a powerful adversary eavesdrops and tampers with traffic. We will examine many deployed protocols and analyze mistakes in existing systems. The second half of the course discusses public-key techniques that let two parties generate a shared secret key. Throughout the course participants will be exposed to many exciting open problems in the field and work on fun (optional) programming projects. In a second course (Crypto II) we will cover more advanced cryptographic tasks such as zero-knowledge, privacy mechanisms, and other forms of encryption.

5. Cryptography II

Learn about the inner workings of cryptographic primitives and protocols and how to apply this knowledge in real-world applications. A free textbook covering the material in the course is available at http://cryptobook.us. This course will launch once the textbook is complete.

6. Bitcoin and Cryptocurrency Technologies

To really understand what is special about Bitcoin, we need to understand how it works at a technical level. We’ll address the important questions about Bitcoin, such as:

How does Bitcoin work? What makes Bitcoin different? How secure are your Bitcoins? How anonymous are Bitcoin users? What determines the price of Bitcoins? Can cryptocurrencies be regulated? What might the future hold?

After this course, you’ll know everything you need to be able to separate fact from fiction when reading claims about Bitcoin and other cryptocurrencies. You’ll have the conceptual foundations you need to engineer secure software that interacts with the Bitcoin network. And you’ll be able to integrate ideas from Bitcoin in your own projects.

7. Internet History, Technology, and Security

The impact of technology and networks on our lives, culture, and society continues to increase. The very fact that you can take this course from anywhere in the world requires a technological infrastructure that was designed, engineered, and built over the past sixty years. To function in an information-centric world, we need to understand the workings of network technology. This course will open up the Internet and show you how it was created, who created it and how it works. Along the way we will meet many of the innovators who developed the Internet and Web technologies that we use today.

After this course you will not take the Internet and Web for granted. You will be better informed about important technological issues currently facing society. You will realize that the Internet and Web are spaces for innovation and you will get a better understanding of how you might fit into that innovation. If you get excited about the material in this course, it is a great lead-in to taking a course in Web design, Web development, programming, or even network administration. At a minimum, you will be a much wiser network citizen.

8. Neural Networks for Machine Learning

Learn about artificial neural networks and how they’re being used for machine learning, as applied to speech and object recognition, image segmentation, modeling language and human motion, etc. We’ll emphasize both the basic algorithms and the practical tricks needed to get them to work well.

This course contains the same content presented on Coursera beginning in 2013. It is not a continuation or update of the original course. It has been adapted for the new platform.

Please be advised that the course is suited for an intermediate level learner — comfortable with calculus and with experience programming (Python).

9. Discrete Optimization

Tired of solving Sudokus by hand? This class teaches you how to solve complex search problems with discrete optimization concepts and algorithms, including constraint programming, local search, and mixed-integer programming.

Optimization technology is ubiquitous in our society. It schedules planes and their crews, coordinates the production of steel, and organizes the transportation of iron ore from the mines to the ports. Optimization clears the day-ahead and real-time markets to deliver electricity to millions of people. It organizes kidney exchanges and cancer treatments and helps scientists understand the fundamental fabric of life, control complex chemical reactions, and design drugs that may benefit billions of individuals.

This class is an introduction to discrete optimization and exposes students to some of the most fundamental concepts and algorithms in the field. It covers constraint programming, local search, and mixed-integer programming from their foundations to their applications for complex practical problems in areas such as scheduling, vehicle routing, supply-chain optimization, and resource allocation.

10. Image and Video Processing: From Mars to Hollywood with a Stop at the Hospital

In this course, you will learn the science behind how digital images and video are made, altered, stored, and used. We will look at the vast world of digital imaging, from how computers and digital cameras form images to how digital special effects are used in Hollywood movies to how the Mars Rover was able to send photographs across millions of miles of space.

The course starts by looking at how the human visual system works and then teaches you about the engineering, mathematics, and computer science that makes digital images work. You will learn the basic algorithms used for adjusting images, explore JPEG and MPEG standards for encoding and compressing video images, and go on to learn about image segmentation, noise removal and filtering. Finally, we will end with image processing techniques used in medicine.

This course consists of 7 basic modules and 2 bonus (non-graded) modules. There are optional MATLAB exercises; learners will have access to MATLAB Online for the course duration. Each module is independent, so you can follow your interests.

11. Computational Neuroscience

This course provides an introduction to basic computational methods for understanding what nervous systems do and for determining how they function. We will explore the computational principles governing various aspects of vision, sensory-motor control, learning, and memory. Specific topics that will be covered include representation of information by spiking neurons, processing of information in neural networks, and algorithms for adaptation and learning. We will make use of Matlab/Octave/Python demonstrations and exercises to gain a deeper understanding of concepts and methods introduced in the course. The course is primarily aimed at third- or fourth-year undergraduates and beginning graduate students, as well as professionals and distance learners interested in learning how the brain processes information.

12. Software Defined Networking

In this course, you will learn about software defined networking and how it is changing the way communications networks are managed, maintained, and secured.

13. Computer Architecture

In this course, you will learn to design the computer architecture of complex modern microprocessors.

14. Malicious Software and its Underground Economy: Two Sides to Every Story

Learn about traditional and mobile malware, the security threats they represent, state-of-the-art analysis and detection techniques, and the underground ecosystem that drives such a profitable but illegal business.

Malicious Software and its Underground Economy: Two Sides to Every Story is a short, introductory, and experimental (i.e., pilot) course featuring 6 lectures. Each lecture lasts roughly anything between 1h and 1.5h and is logically divided in a number of ~15 mins self-contained units. Although a non-negligible effort has been made to fulfill this breakdown, some units last definitely longer and require a bit more effort.

15. Analysis of Algorithms

This course teaches a calculus that enables precise quantitative predictions of large combinatorial structures. In addition, this course covers generating functions and real asymptotics and then introduces the symbolic method in the context of applications in the analysis of algorithms and basic structures such as permutations, trees, strings, words, and mappings.

16. Networks Illustrated: Principles without Calculus

What makes WiFi faster at home than at a coffee shop? How does Google order its search results from the trillions of webpages on the Internet? Why does Verizon charge $15 for every GB of data we use? Is it really true that we are connected in six social steps or less?

These are just a few of the many intriguing questions we can ask about the social and technical networks that form integral parts of our daily lives. This course is about exploring the answers, using a language that anyone can understand. We will focus on fundamental principles like “sharing is hard”, “crowds are wise”, and “network of networks” that have guided the design and sustainability of today’s networks, and summarize the theories behind everything from the social connections we make on platforms like Facebook to the technology upon which these websites run.

Unlike other networking courses, the mathematics included here are no more complicated than adding and multiplying numbers. While mathematical details are necessary to fully specify the algorithms and systems we investigate, they are not required to understand the main ideas. We use illustrations, analogies, and anecdotes about networks as pedagogical tools in lieu of detailed equations.

Please note that per Princeton University policy, no certificates, credentials or reports are awarded in connection with this course.

17. Quantitative Formal Modeling and Worst-Case Performance Analysis

Welcome to Quantitative Formal Modeling and Worst-Case Performance Analysis. In this course, you will learn about modeling and solving performance problems in a fashion popular in theoretical computer science, and generally train your abstract thinking skills.

After finishing this course, you have learned to think about the behavior of systems in terms of token production and consumption, and you are able to formalize this thinking mathematically in terms of prefix orders and counting functions. You have learned about Petri-nets, about timing, and about scheduling of token consumption/production systems, and for the special class of Petri-nets known as single-rate dataflow graphs, you will know how to perform a worst-case analysis of basic performance metrics, like throughput, latency and buffering.

As you will notice, there is an abundance of small examples in this course, but at first sight there are not many industrial size systems being discussed. The reason for this is two-fold. Firstly, it is not my intention to teach you performance analysis skills up to the level of what you will need in industry. Rather, I would like to teach you to think about modeling and performance analysis in general and abstract terms, because that is what you will need to do whenever you encounter any performance analysis problem in the future. After all, abstract thinking is the most revered skill required for any academic-level job in any engineering discipline, and if you are able to phrase your problems mathematically, it will become easier for you to spot mistakes, to communicate your ideas with others, and you have already made a big step towards actually solving the problem. Secondly, although dataflow techniques are applicable and being used in industry, the subclass of single-rate dataflow is too restrictive to be of practical use in large modeling examples. The analysis principles of other dataflow techniques, however, are all based on single-rate dataflow. So this course is a good primer for any more advanced course on the topic.

This course is part of the university course on Quantitative Evaluation of Embedded Systems (QEES) as given in the Embedded Systems master curriculum of the EIT-Digital university, and of the Dutch 3TU consortium consisting of TU/e (Eindhoven), TUD (Delft) and UT (Twente). The course material is exactly the same as the first three weeks of QEES, but the examination of QEES is at a slightly higher level of difficulty, which cannot (yet) be obtained in an online course.

18. Programming Languages, Part B

[As described below, this is Part B of a 3-part course. Participants should complete Part A first — Part B “dives right in” and refers often to material from Part A.]

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language — and in learning new ones.

This course is neither particularly theoretical nor just about programming specifics — it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it.

The course assumes some prior experience with programming, as described in more detail in the first module of Part A. Part B assumes successful completion of Part A.

The course is divided into three Coursera courses: Part A, Part B, and Part C. As explained in more detail in the first module of Part A, the overall course is a substantial amount of challenging material, so the three-part format provides two intermediate milestones and opportunities for a pause before continuing. The three parts are designed to be completed in order and set up to motivate you to continue through to the end of Part C.

Week 1 of Part A has a more detailed list of topics for all three parts of the course, but it is expected that most course participants will not (yet!) know what all these topics mean.

19. Approximation Algorithms Part I

How efficiently can you pack objects into a minimum number of boxes? How well can you cluster nodes so as to cheaply separate a network into components around a few centers? These are examples of NP-hard combinatorial optimization problems. It is most likely impossible to solve such problems efficiently, so our aim is to give an approximate solution that can be computed in polynomial time and that at the same time has provable guarantees on its cost relative to the optimum.

This course assumes knowledge of a standard undergraduate Algorithms course, and particularly emphasizes algorithms that can be designed using linear programming, a favorite and amazingly successful technique in this area. By taking this course, you will be exposed to a range of problems at the foundations of theoretical computer science, and to powerful design and analysis techniques. Upon completion, you will be able to recognize, when faced with a new combinatorial optimization problem, whether it is close to one of a few known basic problems, and will be able to design linear programming relaxations and use randomized rounding to attempt to solve your own problem. The course content and in particular the homework is of a theoretical nature without any programming assignments.

This is the first of a two-part course on Approximation Algorithms.

20. Networks: Friends, Money, and Bytes

You pick up your iPhone while waiting in line at a coffee shop. You google a not-so-famous actor, get linked to a Wikipedia entry listing his recent movies and popular YouTube clips of several of them. You check out user reviews on Amazon and pick one, download that movie on BitTorrent or stream that in Netflix. But suddenly the WiFi logo on your phone is gone and you’re on 3G. Video quality starts to degrade, but you don’t know if it’s the server getting crowded or the Internet is congested somewhere. In any case, it costs you $10 per Gigabyte, and you decide to stop watching the movie, and instead multitask between sending tweets and calling your friend on Skype, while songs stream from iCloud to your phone. You’re happy with the call quality, but get a little irritated when you see there’re no new followers on Twitter. You may wonder how they all kind of work, and why sometimes they don’t. Take a look at the list of 20 questions below. Each question is selected not just for its relevance to our daily lives, but also for the core concepts in the field of networking illustrated by its answers. This course is about formulating and answering these 20 questions.

21. Programming Languages, Part C

[As described below, this is Part C of a 3-part course. Participants should complete Parts A and B first — Part C “dives right in” and refers often to material from Part A and Part B.]

This course is an introduction to the basic concepts of programming languages, with a strong emphasis on functional programming. The course uses the languages ML, Racket, and Ruby as vehicles for teaching the concepts, but the real intent is to teach enough about how any language “fits together” to make you more effective programming in any language — and in learning new ones.

This course is neither particularly theoretical nor just about programming specifics — it will give you a framework for understanding how to use language constructs effectively and how to design correct and elegant programs. By using different languages, you will learn to think more deeply than in terms of the particular syntax of one language. The emphasis on functional programming is essential for learning how to write robust, reusable, composable, and elegant programs. Indeed, many of the most important ideas in modern languages have their roots in functional programming. Get ready to learn a fresh and beautiful way to look at software and how to have fun building it.

The course assumes some prior experience with programming, as described in more detail in the first module of Part A. Part B assumes successful completion of Part A.

The course is divided into three Coursera courses: Part A, Part B, and Part C. As explained in more detail in the first module of Part A, the overall course is a substantial amount of challenging material, so the three-part format provides two intermediate milestones and opportunities for a pause before continuing. The three parts are designed to be completed in order and set up to motivate you to continue through to the end of Part C.

Week 1 of Part A has a more detailed list of topics for all three parts of the course, but it is expected that most course participants will not (yet!) know what all these topics mean.

22. Embedded Hardware and Operating Systems

This course is intended for the Bachelor and Master’s students, who like practical programming and making IoTs applications!

In this course we will talk about two components of a cyber physical system, namely hardware and operating systems.

After completing this course, you will have the knowledge of both hardware components and operating systems. You are able to plan and use embedded operating systems in resource-constraint devices for Internet-of-Things (cyber physical system) applications. In addition, you can use Cooja simulation for designing and simulating wireless sensor network applications.

We have 4 modules, each with a graded quiz in the end and finally we have one peer reviewed programming assignment

The course is actually quite fun at the end when you are playing around with Cooja simulation for IoTs applications. So you can create and simulate your own design for sensor network applications. A lot of features and examples of Contiki and Cooja can be explored via assignments. There are some optional assignments of wireless sensor network applications for students who want to explore more about embedded OS in IoTs applications.

23. Software Architecture for the Internet of Things

This course will teach you how to design futureproof systems that meet the requirements of IoT systems: systems that are secure, interoperable, modifiable and scalable. Moreover, you’ll learn to apply best-in-class software architecture methods to help you design complex IoT and other applications. Lastly, you’ll come to understand the business impact of the technical decisions that you make as an IoT system architect.

You’ll learn all about software architecture in the next 5 weeks! In the first week, you’ll discover why having a well-designed architecture is important and which challenges you might come across while developing your architecture. By the end of the second week, you’ll already be able to write your own requirements! In the third and fourth week, you will learn how to correctly write quality attributes and quality attribute scenarios for a specific case. In the last week, you’ll learn to describe your own patterns and tactics and see how they’re used in an Android framework.

24. The Unix Workbench

Unix forms a foundation that is often very helpful for accomplishing other goals you might have for you and your computer, whether that goal is running a business, writing a book, curing disease, or creating the next great app. The means to these goals are sometimes carried out by writing software. Software can’t be mined out of the ground, nor can software seeds be planted in spring to harvest by autumn. Software isn’t produced in factories on an assembly line. Software is a hand-made, often bespoke good. If a software developer is an artisan, then Unix is their workbench. Unix provides an essential and simple set of tools in a distraction-free environment. Even if you’re not a software developer learning Unix can open you up to new methods of thinking and novel ways to scale your ideas.

This course is intended for folks who are new to programming and new to Unix-like operating systems like macOS and Linux distributions like Ubuntu. Most of the technologies discussed in this course will be accessed via a command line interface. Command line interfaces can seem alien at first, so this course attempts to draw parallels between using the command line and actions that you would normally take while using your mouse and keyboard. You’ll also learn how to write little pieces of software in a programming language called Bash, which allows you to connect together the tools we’ll discuss. My hope is that by the end of this course you be able to use different Unix tools as if they’re interconnecting Lego bricks.

25. Information Security: Context and Introduction

In this course you will explore information security through some introductory material and gain an appreciation of the scope and context around the subject. This includes a brief introduction to cryptography, security management and network and computer security that allows you to begin the journey into the study of information security and develop your appreciation of some key information security concepts.

The course concludes with a discussion around a simple model of the information security industry and explores skills, knowledge and roles so that you can determine and analyse potential career opportunities in this developing profession and consider how you may need to develop personally to attain your career goals.

After completing the course you will have gained an awareness of key information security principles regarding information, confidentiality, integrity and availability. You will be able to explain some of the key aspects of information risk and security management, in addition, summarise some of the key aspects in computer and network security, including some appreciation of threats, attacks, exploits and vulnerabilities. You will also gain an awareness of some of the skills, knowledge and roles/careers opportunities within the information security industry.

26. Basic Modeling for Discrete Optimization

Optimization is a common form of decision making, and is ubiquitous in our society. Its applications range from solving Sudoku puzzles to arranging seating in a wedding banquet. The same technology can schedule planes and their crews, coordinate the production of steel, and organize the transportation of iron ore from the mines to the ports. Good decisions in manpower and material resources management also allow corporations to improve profit by millions of dollars. Similar problems also underpin much of our daily lives and are part of determining daily delivery routes for packages, making school timetables, and delivering power to our homes. Despite their fundamental importance, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

This course is intended for students interested in tackling all facets of optimization applications. You will learn an entirely new way to think about solving these challenging problems by stating the problem in a state-of-the-art high level modeling language, and letting library constraint solving software do the rest. This will allow you to unlock the power of industrial solving technologies, which have been perfected over decades by hundreds of PhD researchers. With access to this advanced technology, problems that are considered inconceivable to solve before will suddenly become easy.

27. Advanced Modeling for Discrete Optimization

Optimization is a common form of decision making, and is ubiquitous in our society. Its applications range from solving Sudoku puzzles to arranging seating in a wedding banquet. The same technology can schedule planes and their crews, coordinate the production of steel, and organize the transportation of iron ore from the mines to the ports. Good decisions in manpower and material resources management also allow corporations to improve profit by millions of dollars. Similar problems also underpin much of our daily lives and are part of determining daily delivery routes for packages, making school timetables, and delivering power to our homes. Despite their fundamental importance, all of these problems are a nightmare to solve using traditional undergraduate computer science methods.

This course is intended for students who have completed Basic Modelling for Discrete Optimization. In this course you will learn much more about solving challenging discrete optimization problems by stating the problem in a state-of-the-art high level modeling language, and letting library constraint solving software do the rest. This course will focus on debugging and improving models, encapsulating parts of models in predicates, and tackling advanced scheduling and packing problems. As you master this advanced technology, you will be able to tackle problems that were inconceivable to solve previously.

28. Moving to the Cloud

The cloud is taking business by storm. In fact, due to the extraordinary growth of the cloud, it has been described as a tornado, not a fluffy white floating object!

Commercial research analysts consider cloud as one of the most significant trends with a potential to change the whole global IT industry. Governments, including those in the US, Britain, and Australia, have cloud-first policies now in place which mandate cloud over non-cloud services in ICT procurement. But CIOs and other senior executives, while it’s on the majority of their agendas, aren’t sure what it really means for their organisations — how to leverage the benefits, control the commercials, manage the business risk, and adapt their organisations.

While it is important to set requirements, negotiate commercials (terms, service level agreements, and pricing), and sign the contract — it is also critical that we develop a clear plan for ‘Moving to the Cloud’ which realigns our business architecture, organization and most importantly our people.
This course provides the answers that management must know to be successful and realise the benefits:

• Where should I go cloud?
• What are the commercials?
• Where is my leverage?
• How do I realign my business practices and architecture?
• How do I gear up my people and structure my organisation?

29. Introduction to Formal Concept Analysis

This course is an introduction into formal concept analysis (FCA), a mathematical theory oriented at applications in knowledge representation, knowledge acquisition, data analysis and visualization. It provides tools for understanding the data by representing it as a hierarchy of concepts or, more exactly, a concept lattice. FCA can help in processing a wide class of data types providing a framework in which various data analysis and knowledge acquisition techniques can be formulated. In this course, we focus on some of these techniques, as well as cover the theoretical foundations and algorithmic issues of FCA.
Upon completion of the course, the students will be able to use the mathematical techniques and computational tools of formal concept analysis in their own research projects involving data processing. Among other things, the students will learn about FCA-based approaches to clustering and dependency mining.
The course is self-contained, although basic knowledge of elementary set theory, propositional logic, and probability theory would help.
End-of-the-week quizzes include easy questions aimed at checking basic understanding of the topic, as well as more advanced problems that may require some effort to be solved.

30. Building Arduino robots and devices

For many years now, people have been improving their tools, studying the forces of nature and bringing them under control, using the energy of the nature to operate their machines. Last century is noted for the creation of machines which can operate other machines. Nowadays the creation of devices that interact with the physical world is available to anyone.
Our course consists of a series of practical problems on making things that work independently: they make their own decisions, act, move, communicate with each other and people around, and control other devices. We will demonstrate how to assemble such devices and programme them using the Arduino platform as a basis.
After this course, you will be able to create devices that read the data about the external world with a variety of sensors, receive and forward this data to a PC, the Internet and mobile devices, and control indexing and the movement. The creation of such devices will involve design, the study of their components, the assemblage of circuit boards, coding and diagnostics. Along with the creation of the devices themselves, you will perform visualization on a PC, create a web page that will demonstrate one of your devices, and figure out how an FDM 3D-printer is configured and how it functions.
Besides those keen on robotics or looking to broaden their horizons and develop their skills, the course will also be useful to anyone facing the task of home and industrial automation, as well as to anyone engaged in industrial design, advertising and art.
The course does not require any special knowledge from the participants and is open even to students of upper secondary school. Programming skills and the level of English allowing to read technical documentation would be an advantage, but this is not obligatory.
The entire course is dedicated to practice, so the best way for you would be to get hold of some electronics, follow the illustrated examples and experiment on your own.

31. Applied AI with DeepLearning

This course, Applied Artificial Intelligence with DeepLearning, is part of the IBM Advanced Data Science Certificate which IBM is currently creating and gives you easy access to the invaluable insights into Deep Learning models used by experts in Natural Language Processing, Computer Vision, Time Series Analysis, and many other disciplines. We’ll learn about the fundamentals of Linear Algebra and Neural Networks. Then we introduce the most popular DeepLearning Frameworks like Keras, TensorFlow, PyTorch, DeepLearning4J and Apache SystemML. Keras and TensorFlow are making up the greatest portion of this course. We learn about Anomaly Detection, Time Series Forecasting, Image Recognition and Natural Language Processing by building up models using Keras one real-life examples from IoT (Internet of Things), Financial Marked Data, Literature or Image Databases. Finally, we learn how to scale those artificial brains using Kubernetes, Apache Spark and GPUs.

IMPORTANT: THIS COURSE ALONE IS NOT SUFFICIENT TO OBTAIN THE “IBM Watson IoT Certified Data Scientist certificate”. You need to take three other courses where two of them are currently built. The Specialization will be ready late spring, early summer 2018

Using these approaches, no matter what your skill levels in topics you would like to master, you can change your thinking and change your life. If you’re already an expert, this peep under the mental hood will give your ideas for turbocharging successful creation and deployment of DeepLearning models. If you’re struggling, you’ll see a structured treasure trove of practical techniques that walk you through what you need to do to get on track. If you’ve ever wanted to become better at anything, this course will help serve as your guide.

Prerequisites: Some coding skills are necessary. Preferably python, but any other programming language will do fine. Also some basic understanding of math (linear algebra) is a plus, but we will cover that part in the first week as well.

If you choose to take this course and earn the Coursera course certificate, you will also earn an IBM digital badge.

32. Discrete Mathematics

Discrete mathematics forms the mathematical foundation of computer and information science. It is also a fascinating subject in itself.

Learners will become familiar with a broad range of mathematical objects like sets, functions, relations, graphs, that are omnipresent in computer science. Perhaps more importantly, they will reach a certain level of mathematical maturity — being able to understand formal statements and their proofs; coming up with rigorous proofs themselves; and coming up with interesting results.

This course attempts to be rigorous without being overly formal. This means, for every concept we introduce we will show at least one interesting and non-trivial result and give a full proof. However, we will do so without too much formal notation, employing examples and figures whenever possible.

The main topics of this course are (1) sets, functions, relations, (2) enumerative combinatorics, (3) graph theory, (4) network flow and matchings. It does not cover modular arithmetic, algebra, and logic, since these topics have a slightly different flavor and because there are already several courses on Coursera specifically on these topics.

33. Introduction to TCP/IP

You use the Internet through your PC (Personal Computer), laptop, tablet, smartpad, and smartphone every day in everything you do. Through your own PC/laptop, you can easily learn everything about the Internet, and that is what this course is focused on. In this course ‘Introduction to TCP/IP,’ you will learn the operational functions of Internet technologies (which include IPv4, IPv6, TCP, UDP, addressing, routing, domain names, etc.) and your PC/laptop’s security and gateway Internet setup and basic principles. In addition, through a simple Wireshark experiment, you will see the TCP/IP packets and security systems in action that are serving your PC/laptop, that serves you.

34. Deep Learning for Business

Your smartphone, smartwatch, and automobile (if it is a newer model) have AI (Artificial Intelligence) inside serving you every day. In the near future, more advanced “self-learning” capable DL (Deep Learning) and ML (Machine Learning) technology will be used in almost every aspect of your business and industry. So now is the right time to learn what DL and ML is and how to use it in advantage of your company. This course has three parts, where the first part focuses on DL and ML technology based future business strategy including details on new state-of-the-art products/services and open source DL software, which are the future enablers. The second part focuses on the core technologies of DL and ML systems, which include NN (Neural Network), CNN (Convolutional NN), and RNN (Recurrent NN) systems. The third part focuses on four TensorFlow Playground projects, where experience on designing DL NNs can be gained using an easy and fun yet very powerful application called the TensorFlow Playground. This course was designed to help you build business strategies and enable you to conduct technical planning on new DL and ML services and products.

35. Architecting Smart IoT Devices

This course will teach you how to develop an embedded systems device. In order to reduce the time to market, many pre-made hardware and software components are available today. You’ll discover all the available hardware and software components, such as processor families, operating systems, boards and networks. You’ll also learn how to actually use and integrate these components.

At the end of the course you will be ready to start architecting and implementing your own embedded device! You’ll learn how to debug and finetune your device and how to make it run on a low power supply.

36. Web Connectivity and Security in Embedded Systems

About this course: Welcome to Web Connectivity and Security in Cyber Physical Systems!

In this course, we will explore several technologies that bring modern devices together, facilitating a network of connected things and making devices internet enabled. We will discuss rules, protocols, and standards for these devices to communicate with each other in the network. We will also go through security and privacy issues and challenges in cyber physical systems (CPS). We will explore measures and techniques for securing systems from different perspectives. Possible attack models are introduced and solutions to tackle such attacks are discussed. Moreover, some basic concepts related to privacy in cyber physical systems are presented.

The course comprises altogether five modules and is split up into two main sections. The first section contains three modules and centers on the problem of web connectivity in cyber physical systems. The second section consist of two modules focusing on security measures in such systems. Each module ends with a graded quiz, and there is a final peer reviewed exam at the end of the course covering the two main sections of the course.

After completing this course, you will have the basic knowledge and capacity for designing the network architecture of your cyber physical system. This includes putting together different components, selecting suitable communication protocols, and utilizing these protocols in your system. You will also be able to define security requirements for your system and choose and implement a proper security and privacy technique to protect it.

37. System Validation (4): Modelling Software, Protocols, and other behaviour

About this course: System Validation is the field that studies the fundamentals of system communication and information processing. It allows automated analysis based on behavioural models of a system to see if a system works correctly. We want to guarantee that the systems does exactly what it is supposed to do. The techniques put forward in system validation allow to prove the absence of errors. It allows to design embedded system behaviour that is structurally sound and as a side effect enforces you to make the behaviour simple and insightful. This means that the systems are not only behaving correctly, but are also much easier to maintain and adapt. ’Modeling Software Protocols, and other behaviour’ demonstrates the power of formal methods in software modelling, communication protocols, and other examples. Reading material. J.F. Groote and M.R. Mousavi. Modeling and analysis of communicating systems. The MIT Press, 2014.

38. Introduction to Architecting Smart IoT Devices

Embedded Systems are so ubiquitous that some of us take them for granted: we find them in smartphones, GPS systems, airplanes and so on. But have you ever wondered how these devices actually work? If so, you’re in the right place!

In this course, you’ll learn about the characteristics of embedded systems: the possibilities, dangers, complications and recipes for success. We’ll discuss all of this in the framework of a flourishing embedded systems field: the Internet of Things, where billions of intercommunicating devices could enable unprecedented, innovative products and services. If you’d like to learn how to create similarly innovative products, then this is the course for you!

At the end of the course, you’ll be able to:
- make the right choice for your own project when it comes to the target market, parallel executions, time and the lifecycle of your system
- hack, avoid failure and promote success
- decide whether to buy or to build components
- how to assemble a good team
- install case tools
- learn how to work with SysML

This is an introductory course. Check out our more advanced course Architecting Smart IoT Devices soon if you want to go beyond the basics!

39. System Validation (3): Requirements by modal formulas

System Validation is the field that studies the fundamentals of system communication and information processing. It allows automated analysis based on behavioural models of a system to see if a system works correctly. We want to guarantee that the systems does exactly what it is supposed to do. The techniques put forward in system validation allow to prove the absence of errors. It allows to design embedded system behaviour that is structurally sound and as a side effect enforces you to make the behaviour simple and insightful. This means that the systems are not only behaving correctly, but are also much easier to maintain and adapt. ’Requirements by modal formulas’ is the third course that shows you how to specify requirements for the automata in order to establish the correct relation between the requirements and the behaviour of the system. Reading material. J.F. Groote and M.R. Mousavi. Modeling and analysis of communicating systems. The MIT Press, 2014.

40. System Validation (2): Model process behavior

About this course: System Validation is the field that studies the fundamentals of system communication and information processing. It is the next logical step in computer science and improving software development in general. It allows automated analysis based on behavioural models of a system to see if a system works correctly. We want to guarantee that the systems does exactly what it is supposed to do. The techniques put forward in system validation allow to prove the absence of errors. It allows to design embedded system behaviour that is structurally sound and as a side effect enforces you to make the behaviour simple and insightful. This means that the systems are not only behaving correctly, but are also much easier to maintain and adapt. ’Model process behaviour’ is the follow up MOOC to ‘Automata and behavioural equivalences’. This MOOC shows you how to model process behaviour, in particular protocols and distributed algorithms, dive deeper in the properties of system behaviour, and keep things simple to avoid a state space explosion. Reading material. J.F. Groote and M.R. Mousavi. Modeling and analysis of communicating systems. The MIT Press, 2014.

This course is part 2 of the set of courses for System Validation. System Validation, as a set of courses, is part of a larger EIT Digital online programme called ‘Internet of Things through Embedded Systems’.

41. System Validation: Automata and behavioural equivalences

Have you ever experienced software systems failing? Websites crash, calendar not synchronising, or even a power blackout. Of course you have! But did you know that many of these errors are the result of communication errors either within a system or between systems? Depending on the system, the impact of software failures can be huge, even resulting in massive economic damage or loss of lives. Software, and in particular the communication between software-intensive systems, is very complex and very difficult to get right. However, we _need_ dependability in the systems we use, directly or indirectly, to support us in our everyday lives.

System Validation helps you to design embedded system behaviour that is structurally sound. It also enforces you to make the behaviour simple and insightful; systems that are designed for sound behaviour are also much easier to maintain and adapt. System Validation is the field that studies the fundamentals of system communication and information processing. The techniques put forward in system validaton allow to prove the absence of errors.

This first course ’Automata and behavioural equivalences’, builds the foundation of the subsequent courses, showing you how to look at system behaviour as state machines. It discusses behavioural equivalences and illustrate these in a number of examples and quizzes. This course explains labelled transition systems or automata to model behaviour for especially software controlled systems. An important question is when two behaviours represented by such automata are equal. The answer to this question is not at all straightforward, but the resulting equivalences are used as powerful tools to simplify complex behaviour. This allows us to exactly investigate and understand the behavioural properties of such systems precisely. Especially, in the combination with hiding of behaviour, equivalence reduction is a unique technique to obtain insight in the behaviour of systems, far more effective than simulation or testing. Using this insight we can make the models correct. Such models form an excellent basis for the production of concise, reliable and maintainable software.

This course is part I of the set of courses for System Validation. System Validation, as a set of courses, is part of a larger EIT Digital online programme called ‘Internet of Things through Embedded Systems’.

42. Approximation Algorithms Part II

This is the continuation of Approximation algorithms, Part 1. Here you will learn linear programming duality applied to the design of some approximation algorithms, and semidefinite programming applied to Maxcut.

By taking the two parts of this course, you will be exposed to a range of problems at the foundations of theoretical computer science, and to powerful design and analysis techniques. Upon completion, you will be able to recognize, when faced with a new combinatorial optimization problem, whether it is close to one of a few known basic problems, and will be able to design linear programming relaxations and use randomized rounding to attempt to solve your own problem. The course content and in particular the homework is of a theoretical nature without any programming assignments.

This is the second of a two-part course on Approximation Algorithms.

43. A Developer’s guide to Node-RED

By enrolling in this course you agree to the End User License Agreement as set out in the FAQ. Once enrolled you can access the license in the Resource.

Rapid application development using agile methodologies and processes are increasingly being used when developing applications. There is pressure on development teams to reduce the time needed to convert an idea into a working solution, be it as part of an innovation workshop or hackathon, a prototype for a new solution idea or main stream development.

Developers are looking for new ways to allow them to be more production and innovations, such as Node-RED from the JS Foundation is a technology that allows a developer to rapidly create applications, taking a fraction of the time need coding write code.

Node-RED is built on Node.js, so will run anywhere capable of hosting node.js applications, such as small single board computers like the Raspberry Pi or Beaglebone, on your laptop or workstation or in cloud environments, such as the IBM Cloud.

Node red allows developers to compose flows using a pallet of nodes, where each node provides prebuilt functionality, that can be connected to other nodes to rapidly construct an application.

The course will improve your use of Node-RED. It will introduce some more advanced features available in key nodes, show you how to visualise data using dashboard nodes. It shows you how to create web APIs using Node-RED and how to consume web services and how to make use of different storage technologies within a Node-RED flow. The last section of the course shows how you can extend Node-RED by creating your own nodes.

What technology is required to complete the course?
The course requires you to have an IBM Cloud account, as some of the assignment work does make use of designated cloud services. You can create a free account on the IBM Cloud and in week 2 of the course we make a promotional code available, which unlocks some additional resources on the IBM Cloud, so you can complete the course without having to provide credit card information or pay for cloud services.

If you choose to take this course and earn the Coursera course certificate, you will also earn an IBM digital badge. To find out more about IBM digital badges follow the link https://ibm.biz/badging.

44. Cyber-Physical Systems: Modeling and Simulation

Cyber-physical systems (CPS for short) combine digital and analog devices, interfaces, networks, computer systems, and the like, with the natural and man-made physical world. The inherent interconnected and heterogeneous combination of behaviors in these systems makes their analysis and design an exciting and challenging task.

CPS: Modeling and Simulation provides you with an introduction to modeling and simulation of cyber-physical systems. The main focus is on models of physical process, finite state machines, computation, converters between physical and cyber variables, and digital networks. The instructor of this course is Ricardo Sanfelice (https://hybrid.soe.ucsc.edu), Associate Professor in the Department of Computer Engineering at the University of California Santa Cruz.

[Courses in Spanish]

45. Detección de objetos

¿Te interesa la visión por computador? ¿Te gustaría conocer qué métodos puedes utilizar para detectar y reconocer objetos en una imagen?

En este curso te introducirás en los principios básicos de cualquier sistema automático de detección y reconocimiento de objetos en imágenes. A lo largo del curso analizaremos diferentes métodos de representación y clasificación que te permitirán abordar casos de aplicación de complejidad creciente.

El contenido del curso se estructura a partir de un esquema básico de detección y reconocimiento de objetos que sirve de guía para ir introduciendo tanto los diferentes métodos de extracción de características y representación de la imagen como diferentes alternativas para clasificar una imagen y para localizar todas las instancias de un objeto en la imagen. El temario incluye conceptos básicos de formación de la imagen, la convolución y su aplicación a la detección de contornos, características de regiones, descriptores de imagen (Local Binary Pattern, Histogram of Oriented Gradients, características de Haar) y varios métodos de clasificación (clasificador lineal, Support Vector Machine, Adaboost, Random Forest, Convolutional Neural Network).

Finalizar el curso te permitirá:
• Diseñar, a partir de un esquema básico común, soluciones adaptadas para diferentes problemas de detección y reconocimiento de objetos en una imagen,
• Conocer las principales técnicas para la descripción y clasificación de una imagen,
• Conocer las herramientas que permiten el desarrollo de aplicaciones reales de detección y reconocimiento de objetos, para que seas capaz de desarrollar tus propios sistemas de detección y reconocimiento de objetos en múltiples aplicaciones.

El curso está orientado tanto a estudiantes universitarios de algún grado relacionado con la informática, la ingeniería o las matemáticas, como a otros estudiantes con conocimientos de programación, interesados en aprender cómo utilizar técnicas de visión por computador para extraer información de las imágenes.

46. La Web Semántica: Herramientas para la publicación y extracción efectiva de información en la Web

Imagina que pudieses pedirle a Google que buscase una hora con tu médico especialista. Imagina además que Google reservase automáticamente la hora que más te acomoda. Ese es el objetivo de la Web Semántica, el que tu computador sea capaz de entender lo que le estás pidiendo y ejecute las acciones necesarias (interactuando automáticamente con otros computadores) para conseguir lo que le pides. Para lograr ese objetivo los computadores deben ser capaces de entender a los personas y máquinas que interactúan en el proceso, para lo cual se necesita de una semántica común. Este es el fin del área de investigación de la Web Semántica. Para que la comunicación entre las personas y computadores funcione a nivel semántico se necesitan tres tecnologías clave: un modelo de datos común (RDF) para leer y escribir en el mismo idioma; un lenguaje de consultas para ese modelo de datos (SPARQL) que permita extraer información; y una lógica que opera sobre esos mismos datos (OWL) para poder razonar sobre ellos. Este curso introducirá los conceptos necesarios para entender estas tecnologías clave. Al finalizar el curso, los participantes serán capaces de entender los conceptos fundamentales de la Web Semántica y sus principales tecnologías, y desarrollar sus propias aplicaciones utilizando las tecnologías de la Web Semántica. Finalmente, los alumnos verán como el objetivo de la Web Semántica no está tan lejos de conseguirse.

47. Electrones en Acción: Electrónica y Arduinos para tus propios Inventos

Este curso introduce al alumno a la electrónica y los Arduinos, comenzando desde lo más básico de un circuito eléctrico y finalizando con el diseño de circuitos de baja complejidad empleando dispositivos electrónicos programables. Durante el curso los alumnos aprenderán los fundamentos básicos de la electricidad y de la electrónica, conocerán los diferentes bloques empleados en el diseño de un circuito electrónico, aprenderán las bases del diseño de circuitos analógicos y digitales, y serán introducidos a la programación de estos últimos empleando la plataforma Arduino.

El curso apunta a estudiante de último año de educación escolar y primer año de educación universitaria, o cualquier otro alumno con suficiente motivación como para llevar a cabo sus propios experimentos y seguir aprendiendo en el futuro.

Si bien no es un requisito esencial, los alumnos que tengan nociones de cálculo diferencial e integral podrán entender mejor algunos tópicos específicos, que no son estrictamente necesarios para concluir el curso.

El curso incluye demostraciones de dispositivos electromecánicos sencillos controlados mediante un Arduino. Cada circuito demostrativo lleva asociado un diagrama de conexiones y un programa, ambos debidamente explicados, para facilitar que sean replicados por los alumnos empleando la plataforma Arduino.

48. Clasificación de imágenes: ¿cómo reconocer el contenido de una imagen?

¿Te interesa la visión por computador? ¿Te gustaría saber cómo se puede reconocer el contenido visual de las imágenes y clasificarlas a partir de su contenido?

En este curso aprenderás diferentes métodos de representación y clasificación de imágenes. El temario del curso te permitirá conocer el esquema básico de clasificación de imágenes conocido como Bag of Visual Words. A partir de este esquema básico aprenderás cómo utilizar varios descriptores locales de la imagen así como los métodos de clasificación más habituales. También describiremos diferentes extensiones del esquema básico que permiten combinar distintos descriptores, incluir información espacial o mejorar la representación final de la imagen.

Finalizar el curso te permitirá:
• Diseñar soluciones adaptadas para diferentes problemas de clasificación y reconocimiento de imágenes
• Conocer las principales técnicas usadas para la descripción y clasificación de una imagen
• Acceder a las herramientas que permiten el desarrollo de aplicaciones reales de clasificación de imágenes

El curso está orientado tanto a estudiantes universitarios de algún grado relacionado con la informática, la ingeniería o las matemáticas, como a otros estudiantes con conocimientos de programación, interesados en aprender cómo utilizar técnicas de visión por computador para extraer información de las imágenes.

49. Introdução à Ciência da Computação com Python Parte 1

Bem vindo ao curso de Introdução à Ciência da Computação destinado aos alunos regulares da Universidade de São Paulo e a todos os demais interessados em aprender não só a programar em Python mas também os conceitos básicos da Ciência da Computação!

Aqui você irá aprender os principais conceitos introdutórios de Ciência da Computação e também aprenderá a desenvolver pequenos programas na linguagem Python.

Este curso não possui pré-requisitos. Não é esperado que você tenha qualquer experiência prévia em programação, no entanto, se supõe que o aluno domine os conceitos básicos de matemática do ensino fundamental.

O objetivo principal é desenvolver o raciocínio aplicado à formulação e resolução de problemas computacionais. O ato de programar é uma ferramenta útil para trabalhar esse raciocínio, bem como tornar mais concretos outros conceitos comuns em Ciência da Computação.

Ao término do curso, o aluno estará capacitado para escrever pequenos programas em Python e prosseguir para a parte 2 do curso.

Bom aprendizado!

===
Esse curso foi elaborado com o apoio dos Profs. José Coelho de Pina e Carlos Hitoshi Morimoto do Departamento de Ciência da Computação do IME-USP.

Nelson Posse Lago, gerente técnico do CCSL-IME-USP, Athos Ribeiro e Yorah Bosse têm sido excelentes assistentes de ensino, ajudando a manter a qualidade do curso.

50. A complexidade sensível: Um paralelo entre videogames e arte

Este curso oferece respaldo aos interessados em atuar como desenvolvedores, pesquisadores e docentes na área do jogos, tendo como foco o entendimento destes como partes integrantes da cultura contemporânea e do cenário artístico atual.

Serão apresentados conceitos fundamentais às discussões dos videogames vistos como expressões culturais e artísticas. Através de videoaulas explanativas, leituras recomendadas, entrevistas com especialistas, exercícios reflexivos e discussões em grupo, serão transmitidos conhecimentos com o intuito de iniciar os interessados no tema ou mesmo enriquecer o repertório daqueles que já atuam na área.

Embora este curso seja fundamentalmente teórico, pretendemos criar uma ponte entre as esferas acadêmica e mercadológica. Para isso, incentivamos a aplicação pragmática através da proposição de uma avaliação por pares. Os alunos serão levados a rascunhar o projeto de um videogame e compartilhá-lo com os colegas, tendo a chance de refletir sobre o feedback recebido.

O objetivo principal deste oferecimento é propiciar embasamento adequado aos estudantes interessados em explorar as relações entre videogames e arte.

51. Sprachtechnologie in den Digital Humanities

Sie möchten wissen, was genau die Digitalisierung von Texten beinhaltet? Sie haben sich schon immer gefragt, wie Texte in einem Korpus optimal durchsuchbar gemacht werden? Sie wundern sich, wie Texte mit linguistischen Informationen angereichert werden können?
Dann sind Sie in diesem Kurs genau richtig!! Er bietet einen Überblick über die wichtigsten Konzepte und Probleme bei der Digitalisierung und Annotation von geschriebenen Texten. In sechs thematischen Modulen verteilt auf sechs Wochen lernen Sie relevante Technologien und Werkzeuge kennen. Jedes Modul beinhaltet zwei bis drei Videos (10–20 Minuten), ein Quiz oder ein Peer-Assessment sowie kurze Hintergrundtexte und weiterführende Links zu ausgewählten Themen.

Für wen ist dieser Kurs interessant:
Dieser Kurs richtet sich an Korpuslinguist/-innen, an Geisteswissenschaftler/-innen und Sprachinteressierte, die von einer rein sprachwissenschaftlichen Perspektive ausgehend auch ein paar Schritte in die Welt der Digitalisierung von Texten wagen und die dahinterstehenden Technologien kennenlernen möchten.
Für diesen Kurs brauchen Sie keine Programmierkenntnisse. Mit Interesse an der Digitalisierung und Annotation von Texten sind Sie bestens gerüstet für diesen Kurs.

Wir freuen uns, mit Ihnen diese digitalen Wege zu beschreiten, die in den Geisteswissenschaften immer wichtiger werden.

[Courses in Russian]

52. Введение в машинное обучение

About this course: Не так давно получил распространение термин «большие данные», обозначивший новую прикладную область — поиск способов автоматического быстрого анализа огромных объёмов разнородной информации. Наука о больших данных ещё только оформляется, но уже сейчас она очень востребована — и в будущем будет востребована только больше.
С её помощью можно решать невероятные задачи: оценивать состояние печени по кардиограмме, предсказывать зарплату по описанию вакансии, предлагать пользователю музыку на основании его анкеты в интернете.

Большими данными может оказаться что угодно: результаты научных экспериментов, логи банковских транзакций, метеорологические наблюдения, профили в социальных сетях — словом, всё, что может быть полезно проанализировать.
Самым перспективным подходом к анализу больших данных считается применение машинного обучения — набора методов, благодаря которым компьютер может находить в массивах изначально неизвестные взаимосвязи и закономерности.

На факультете компьютерных наук ВШЭ и в Школе анализа данных есть люди, активно использующие машинное обучение и разрабатывающие новые подходы к нему. Именно они — преподаватели этого курса.

Вы изучите основные типы задач, решаемых с помощью машинного обучения — в основном речь пойдёт о классификации, регрессии и кластеризации. Узнаете об основных методах машинного обучения и их особенностях, научитесь оценивать качество моделей — и решать, подходит ли модель для решения конкретной задачи. Наконец, познакомитесь с современными библиотеками, в которых реализованы обсуждаемые модели и методы оценки их качества. Для работы мы будем использовать реальные данные из реальных задач.

Краткая программа курса:
Неделя 1. Введение. Примеры задач. Логические методы: решающие деревья и решающие леса.
Неделя 2. Метрические методы классификации. Линейные методы, стохастический градиент.
Неделя 3. Метод опорных векторов (SVM). Логистическая регрессия. Метрики качества классификации.
Неделя 4. Линейная регрессия. Понижение размерности, метод главных компонент.
Неделя 5. Композиции алгоритмов, градиентный бустинг. Нейронные сети.
Неделя 6. Кластеризация и визуализация. Частичное обучение.
Неделя 7. Прикладные задачи анализа данных: постановки и методы решения.

Слушателю нужно знать об основных понятиях математики: функциях, производных, векторах, матрицах. Для выполнения практических заданий потребуются базовые навыки программирования. Очень желательно знать Python. Задания рассчитаны на использование этого языка и его библиотек numpy, pandas и scikit-learn.

Чтобы успешно завершить курс, нужно набрать проходную сумму баллов за тесты и практические задания, а также выполнить финальный проект, посвящённый решению прикладной задачи анализа данных.

Мы уверены, что этот курс будет полезен каждому, кто хочет постичь искусство предсказательного моделирования и освоить интеллектуальный анализ данных.

53. Алгоритмизация вычислений (Algorithmic computation)

Курс «Алгоритмизация вычислений» будет вам интересен и просто необходим, если вы хотели бы изучить программирование с нуля и выйти на хороший базовый уровень, научиться составлять, понимать и анализировать алгоритмы.

В результате изучения курса вы сможете:
• записывать математическую постановку задачи;
• применять стандартные алгоритмы для решения задач;
• оценивать оптимальность алгоритмов и выбирать алгоритм, дающий лучшее решение задачи;
• проверять правильность алгоритма методом трассировки;
• кодировать алгоритмы с использованием технологии структурного программирования;
• отлаживать и тестировать программы.

Изучение данной дисциплины базируется на знании студентами основ математики, информатики и основ алгоритмизации в пределах программы средней школы, умении применять математический аппарат при выборе метода решения задачи.
Для освоения учебной дисциплины, студенты должны владеть школьными знаниями, получаемыми в процессе изучения указанных выше курсов.

Этот курс лежит в основе всего программирования. Можно сказать, что это фундамент, на котором будет строиться все дальнейшее обучение программированию. Мы будем решать задачи, постепенно переходя от простых к более сложным. В конечном итоге вы научитесь решать задачи обработки динамических списков, т.е. работать на хорошем базовом уровне.

54. Строим роботов и другие устройства на Arduino. От светофора до 3D-принтера

На протяжении тысячелетий люди усовершенствовали орудия труда, изучали силы природы и подчиняли их себе, использовали их энергию для работы машин, а в прошлом веке создали машины, которые могут управлять другими машинами. Теперь создание устройств, которые взаимодействуют с физическим миром, доступно даже школьнику.

Наш курс состоит из серии практических задач про создание вещей, которые работают сами: изучают мир, принимают решения и действуют — двигаются, обмениваются данными друг с другом и с человеком, управляют другими устройствами. Мы покажем, как собирать эти устройства и программировать их, используя в качестве основы платформу Arduino.

Пройдя этот курс, вы сможете создавать устройства, которые считывают данные о внешнем мире с разнообразных датчиков, обрабатывают информацию, получают и отправляют данные на ПК, в Интернет, на мобильные устройства, управляют индикацией и движением. Создание устройств будет включать проектирование, изучение компонентов, сборку схем, написание программ, диагностику. Попутно с созданием самих устройств вы сделаете визуализацию на ПК, создадите веб-страницу, которую будет демонстрировать одно из ваших устройств, а также разберетесь с устройством и работой FDM 3D-принтера.

Помимо тех, кто увлекается робототехникой или стремится расширить кругозор и свои навыки, курс будет полезен всем, кто сталкивается с задачами бытовой и производственной автоматизации, а также занимается промышленным дизайном, рекламой и искусством.

Курс не требует специальных знаний у слушателей, доступен даже ученикам старших классов средней школы. Плюсом будут навыки программирования и владение английским языком на уровне чтения технической документации, однако обязательным это не является.

Весь курс посвящен практике и самым лучшим решением для вас будет раздобыть электронику, повторять показанные примеры и экспериментировать самостоятельно.

55. Сетевое администрирование: от теории к практике

В настоящее время без сети не может обойтись ни кондитер, ни водитель. И даже дети, которые еще не ходят в школу, а то и в детский сад, уже пользуются сетями. Поэтому сейчас специалистов в этой области требуется всё больше. Наш курс поможет желающим разобраться во всех премудростях этого интереснейшей области.

В этом курсе слушатели:
- составят целостную картину о работе локальных и глобальных компьютерных сетей;
- увидят, как передаётся информация,
- поймут логику и принципы работы сетевых протоколов и базовых служб,
- научатся диагностировать работоспособность сетевых соединений, выявлять и устранять неполадки, работать с сетевым
анализатором,
- освоят технологию виртуализации аппаратного обеспечения
- и смогут создавать и размещать собственные сетевые серверы и веб-ресурсы на них.

Слушатель получит представление и о самых низкоуровневых процессах в сети, и о высокоуровневых.

После освоения курса слушатель сможет:
- проектировать и разворачивать сети самостоятельно,
- настраивать сетевое оборудование,
- настраивать серверы и создавать веб-ресурсы, размещая их как удалённо на стороннем, так и локально на своём оборудовании.

Курс включает в себя практическую часть, выполняемую при помощи средств виртуализации аппаратного
обеспечения непосредственно на компьютере слушателя.

56. Введение в параллельное программирование с использованием OpenMP и MPI

About this course: Потребность решения сложных прикладных задач с большим объемом вычислений и принципиальная ограниченность максимального быстродействия «классических» — по схеме фон Неймана — ЭВМ привели к появлению многопроцессорных вычислительных систем (МВС) или суперкомпьютеров.
Широкое распространение параллельные вычисления приобрели с переходом компьютерной индустрии на массовый выпуск многоядерных процессоров с векторными расширениями. В настоящие время практически все устройства — от карманных гаджетов и до самых мощных суперкомпьютеров — оснащены многоядерными процессорами. И если вы пишите последовательную программу, не применив распределение работы между разными ядрами центрального процессора и не проведя векторизацию, то вы используете только часть вычислительных возможностей центрального процессора.

Пройдя этот курс, вы познакомитесь с основными архитектурами МВС, с двумя стандартами (OpenMP и MPI), позволяющими писать параллельные программы для систем с общей и распределенной памятью. На простых примерах будут разобраны основные конструкции и способы распределения работы. Выполнение практических заданий позволит вам приобрести практические навыки создания параллельных программ. Курс будет интересен всем, кто занимается программированием.

Для участия в курсе слушателю необходимо иметь базовые знания по программированию с использованием С/С++.

Курс состоит из 9 недель. Каждая неделя курса содержит видеолекции, а также проверочные задания. Сертификат получают слушатели, набравшие более 80 % от максимально возможного количества баллов. При этом итоговый результат, представленный как 100 %, складывается из следующих составляющих: тесты 1–5 недели дают 4 %, тесты 6–9 недели дают 5 %, все практические задания дают 10 %, кроме итогового практического задания по OpenMP, которое дает 20 %.

[Courses in Chinese]

57. 機器學習基石上 (Machine Learning Foundations)---Mathematical Foundations

About this course: Machine learning is the study that allows computers to adaptively improve their performance with experience accumulated from the data observed. Our two sister courses teach the most fundamental algorithmic, theoretical and practical tools that any user of machine learning needs to know. This first course of the two would focus more on mathematical tools, and the other course would focus more on algorithmic tools. [機器學習旨在讓電腦能由資料中累積的經驗來自我進步。我們的兩項姊妹課程將介紹各領域中的機器學習使用者都應該知道的基礎演算法、理論及實務工具。本課程將較為著重數學類的工具,而另一課程將較為著重方法類的工具。]

58. 操作系统与虚拟化安全

操作系统是计算机系统的基础软件,而系统虚拟化已成为云计算平台的核心技术,没有它们提供的安全性,这些计算机系统及其上数据的安全性都将无法保障。本课程将从理论与工程实践相结合的角度,介绍操作系统(Linux)与系统虚拟化(Xen)安全相关理论、技术和方法,包括:安全概念、安全机制、安全模型、安全体系结构、安全开发方法、安全标准与评测方法等,帮助你深入学习和理解该领域的知识体系、实践技术和方法。

59. 计算机组成 Computer Organization

本课程重点讲述计算机的内部结构和工作原理,着眼于软件和硬件的衔接互动,注重基本概念和真实系统的对应。

60. 计算机辅助翻译原理与实践 Principles and Practice of Computer-Aided Translation

现代语言服务行业要求从业人员必须具有利用计算机及网络来使用各类技术辅助工具帮助其工作的能力,而不是仅仅学会几款狭义的计算机辅助翻译软件。

本课程主要讲授计算机辅助翻译技术的基础概念,学习多种计算机辅助翻译工具的使用方法,锻炼学生在技术环境下从事翻译工作等各类语言服务工作的能力,帮助学生理解信息化时代的语言服务工作。

课程完整涵盖现代语言服务的基本情况介绍、翻译技术基本概念、语言服务项目执行过程的信息环境与信息技术、如何利用电子辞典、网络资源及语料库工具辅助翻译工作、狭义和广义的计算机辅助翻译工具原理及实战演练、翻译内容质量评定、多人协同翻译项目、翻译管理等多方面的内容。作为翻译类专业学生的必修课程,本课程适合语言类专业学生学习。通过课程的学习,有助于学习者了解现代语言服务行业,增强各类计算机辅助翻译工具的使用技能,提高包括翻译工作在内的各类语言服务工作的效率。

该课程是“北大-德稻网络公开课程”中的一门,由北京大学与德稻教育联合提供。

本课程同时受到“语言能力协同创新计划”资助和支持。

Those who work in modern language service industry are required to be capable of using computers and Internet to aid their translation job by adapting a variety of efficient tools, rather than just using word processor tools and several basic computer-aided translation software.

This course teaches the basic concepts of computer-aided translation technology, helps students learn to use a variety of computer-aided translation tools, enhances their ability to engage in various kinds of language service in such a technical environment, and helps them understand what the modern language service industry looks like.

This course covers introduction to modern language services industry, basic principles and concepts of translation technology, information technology used in the process of language translation, how to use electronic dictionaries, Internet resources and corpus tools, practice of different computer-aided translation tools, translation quality assessment, basic concepts of machine translation, globalization, localization and so on. As a compulsory course for students majoring in Translation and Interpreting, this course is also suitable for students with or without language major background. By learning this course, students can better understand modern language service industry and their work efficiency will be improved for them to better deliver translation service.

The course is one of the PKU-DeTao MOOCs, which is a joint effort by Peking University and DeTao Masters Academy.

61. 操作系统原理(Operating Systems)

《操作系统原理》是针对计算机科学技术专业三年级本科生开设的一门专业基础课程。本课程着重学生系统观的培养,通过重点讲述操作系统的内部结构、工作原理及典型技术的实现,使学生建立起对操作系统的整体及各个功能模块的认识,从而系统掌握计算机的专业知识,进一步提升学生的软件开发能力乃至系统软件开发能力。

任何计算机都必须在加载相应的操作系统之后,才能构成一个可以运转的、完整的计算机系统。操作系统的功能是否强大,决定了计算机系统的综合能力;操作系统的性能高低,决定了整个计算机系统的性能;操作系统本身的安全可靠程度,决定了整个计算机系统的安全性和可靠性。操作系统是软件技术的核心和基础运行平台。因此,计算机科学技术专业的学生需要学习和掌握操作系统的基本原理和专业知识。

本课程的教学目标是:

1.掌握操作系统的基本概念、功能组成、系统结构及运行环境;

2.熟悉并运用操作系统工作原理、设计方法和实现技术,理解有代表性、典型的操作系统实例(如UNIX、Linux和Windows);

3.了解操作系统的演化过程、发展研究动向、新技术以及新思想,为后续相关课程的学习打下良好基础,为后续职业发展奠定基石。

62. 算法设计与分析 Design and Analysis of Algorithms

课程教学目标

针对实际问题需求,进行数学建模并选择高效求解算法的训练,为提高学生的素质和创新能力打下必要的基础。主要内容涉及:面对实际问题建立数学模型、设计正确的求解算法、算法的效率估计、改进算法的途径、问题计算复杂度的估计、难解问题的确定和应对策略等等。本课程是算法课程的基础部分,主要涉及算法的设计、分析与改进途径,其他有关计算复杂性的内容将在后续课程中加以介绍。

课程内容安排

本课程的内容分成两大部分:算法的基础知识、通用算法设计技术与分析方法。

第一部分是算法基础知识,约占20%,主要介绍算法相关的基本概念和数学基础。比如,什么是算法的伪码描述?什么是算法最坏情况下和平均情况下的时间复杂度?算法时间复杂度函数的主要性质,算法复杂度估计中常用的数学方法,如序列求和及递推方程求解。

第二部分是通用的算法设计技术与分析方法,主要介绍分治策略、动态规划、贪心法、回溯与分支限界。主要介绍这些设计技术的使用条件、分析方法、改进途径,并给出一些重要的应用。

63. 离散优化建模高阶篇 Advanced Modeling for Discrete Optimization

优化问题是一种常见的决策问题,它在我们的社会中很常见。它的应用可以从数独问题的解决涵盖到婚礼的座次安排。同样的技术可以用于航班与机组成员的安排,钢铁生产的调节,和钢铁从矿区到港口的调度问题。在生产中,人力资源与生产材料的合理决策可以使企业获得成千上万的利润提升。类似的问题也存在于我们的日常生活中,它们包括决定包裹的运输路径,调整学校课程时间,和传输能源到千家万户。尽管这些问题很基础,不过以一般本科教育的知识来解决这些问题都会十分困难。

这个课程是设计给已完成离散优化建模基础篇的同学。你将学习到更多关于如何使用先进的高级建模语言表述清楚具有挑战性的离散优化问题,并让约束求解器完成其余工作。本课程将重点介绍模型调试与改良,如何把一个复杂的约束定义封装到一个谓词里面,及如何着手各种复杂的项目调度和打包问题。当你掌握这种先进的技术,你将能够解决以前难以想象的问题。

64. 离散优化建模基础篇 Basic Modeling for Discrete Optimization

优化问题是一种常见的决策问题,它在我们的社会中很常见。它的应用可以从数独问题的解决涵盖到婚礼的座次安排。同样的技术可以用于航班与机组成员的安排,钢铁生产的调节,和钢铁从矿区到港口的调度问题。在生产中,人力资源与生产材料的合理决策可以使企业获得成千上万的利润提升。类似的问题也存在于我们的日常生活中,它们包括决定包裹的运输路径,调整学校课程时间,和传输能源到千家万户。尽管这些问题很基础,不过以一般本科教育的知识来解决这些问题都会十分困难。

这个课程是设计给所有对优化问题应用的各个方面感兴趣的同学。你将学习到一种全新的方法来思考如何解决这些有挑战性的问题。这种方法只需用先进的高级建模语言把问题在表述清楚,然后让约束求解器完成剩下的工作。它可以让你接触到业界问题求解的技术,而这在过去几十年中有上百个博士研究者不断将其完善优化。通过利用这种前沿的科技,在过去看起来不可思议的问题突然间变得易如反掌。

65. 离散优化建模高阶篇 Advanced Modeling for Discrete Optimization

优化问题是一种常见的决策问题,它在我们的社会中很常见。它的应用可以从数独问题的解决涵盖到婚礼的座次安排。同样的技术可以用于航班与机组成员的安排,钢铁生产的调节,和钢铁从矿区到港口的调度问题。在生产中,人力资源与生产材料的合理决策可以使企业获得成千上万的利润提升。类似的问题也存在于我们的日常生活中,它们包括决定包裹的运输路径,调整学校课程时间,和传输能源到千家万户。尽管这些问题很基础,不过以一般本科教育的知识来解决这些问题都会十分困难。

这个课程是设计给已完成离散优化建模基础篇的同学。你将学习到更多关于如何使用先进的高级建模语言表述清楚具有挑战性的离散优化问题,并让约束求解器完成其余工作。本课程将重点介绍模型调试与改良,如何把一个复杂的约束定义封装到一个谓词里面,及如何着手各种复杂的项目调度和打包问题。当你掌握这种先进的技术,你将能够解决以前难以想象的问题。

66. 离散优化建模基础篇 Basic Modeling for Discrete Optimization

优化问题是一种常见的决策问题,它在我们的社会中很常见。它的应用可以从数独问题的解决涵盖到婚礼的座次安排。同样的技术可以用于航班与机组成员的安排,钢铁生产的调节,和钢铁从矿区到港口的调度问题。在生产中,人力资源与生产材料的合理决策可以使企业获得成千上万的利润提升。类似的问题也存在于我们的日常生活中,它们包括决定包裹的运输路径,调整学校课程时间,和传输能源到千家万户。尽管这些问题很基础,不过以一般本科教育的知识来解决这些问题都会十分困难。

这个课程是设计给所有对优化问题应用的各个方面感兴趣的同学。你将学习到一种全新的方法来思考如何解决这些有挑战性的问题。这种方法只需用先进的高级建模语言把问题在表述清楚,然后让约束求解器完成剩下的工作。它可以让你接触到业界问题求解的技术,而这在过去几十年中有上百个博士研究者不断将其完善优化。通过利用这种前沿的科技,在过去看起来不可思议的问题突然间变得易如反掌。

67. 機器學習基石下 (Machine Learning Foundations)---Algorithmic Foundations

Machine learning is the study that allows computers to adaptively improve their performance with experience accumulated from the data observed. Our two sister courses teach the most fundamental algorithmic, theoretical and practical tools that any user of machine learning needs to know. This second course of the two would focus more on algorithmic tools, and the other course would focus more on mathematical tools. [機器學習旨在讓電腦能由資料中累積的經驗來自我進步。我們的兩項姊妹課程將介紹各領域中的機器學習使用者都應該知道的基礎演算法、理論及實務工具。本課程將較為著重方法類的工具,而另一課程將較為著重數學類的工具。

68. 计算机操作系统

1946年第一台计算机面世之后,科学家与工程师们一直致力于让计算机更好地为人类工作,一代又一代操作系统因此应运而生。操作系统是计算机系统的灵魂,它管理计算机系统的资源,提供友善的人机互动,对于每一位计算机用户来说,认知和理解操作系统非常重要。
南京大学是中国最早从事,操作系统研发与教学的单位,1980年在中国首先出版了操作系统教程教材,至2014年该教材已更新至第五版。
本课程的教学组织为六个部分:计算机操作系统概述、处理器管理、存储管理、设备管理、文件管理、并发程序设计。学习者能够认知操作系统的基本概念与实现原理,并深入理解操作系统的设计方法与实现技术。
如果您是计算机科学、软件工程、电子、通信、控制、信息系统、电子商务、计算与信息科学等信息技术相关专业的学生,可以系统地学习本课程基本部分的内容,如果您想致力于操作系统的研发工作,可以进一步学习高级部分的内容;此外 如果您是计算机爱好者,
可以根据自己的需要,按需学习本课程相关部分的内容,建立对计算机操作系统整体或部分的认知。
本课程有三个特点:第一,强调计算机软硬件协同设计技术,讲授操作系统各个模块的实现方法、策略与算法;第二,从大型软件系统构造的角度看待操作系统的实现,训练学生以折中的方法和方案,综合解决宏观问题的能力;第三,采用工程师的立场,强调操作系统的构造特征,即概念大于理论、技术大于算法、整体先于局部,培养学生综合解决实际问题的能力。欢迎大家修读本课程!

Disclosure: We are affiliated with some of the resources mentioned in this article. We may get a small commission if you buy a course through links on this page. Thank you.

--

--

Quick Code
Quick Code

A list of best courses to learn programming, web, mobile, chatbot, AR/VR development, database management, data science, web design and cryptocurrency.