star_border star_border star_border star_border star_border
Is my code fast? Can it be faster? Scientific computing, machine learning, and data science are about solving problems that are compute intensive. Choosing the right algorithm, extracting parallelism at various levels, and amortizing the cost of data movement are vital to achieving scalable speedup and high performance. In this course, the simple but important example of matrix-matrix multiplication is used to illustrate fundamental techniques for attaining high-performance on modern CPUs. A carefully designed and scaffolded sequence of exercises leads the learner from a naive implementation to one that effectively utilizes instruction level parallelism and culminates in a high-performance multithreaded implementation. Along the way, it is discovered that careful attention to data movement is key to efficient computing. Prerequisites for this course are a basic understanding of matrix computations (roughly equivalent toWeeks 1-5 of Linear Algebra: Foundations to Frontiers on edX) and an exposure to programming. Hands-on exercises start with skeletal code in the C programming language that is progressively modified, so that extensive experience with C is not required. Access to a relatively recent x86 processor such as Intel Haswell or AMD Ryzen (or newer) running Linux is required. MATLAB Online licenses will be made available to the participants free of charge for the duration of the course. Join us to satisfy your need for speed!
    star_border star_border star_border star_border star_border
    This is the 1st course in the intermediate, undergraduate-level offering that makes up the larger Cybersecurity Fundamentals MicroBachelors Program. We recommend taking them in order, unless you have a background in these areas already and feel comfortable skipping ahead. Information Security - Introduction to Information Security Information Security - Authentication and Access Control Information Security - Advanced Topics Network Security - Introduction to Network Security Network Security - Protocols Network Security - Advanced Topics Penetration Testing - Discovering Vulnerabilities Penetration Testing - Exploitation Penetration Testing - Post Exploitation These topics build upon the learnings that are taught in the introductory-level Computer Science Fundamentals MicroBachelors program, offered by the same instructor. This is a self-paced course that provides an introduction to information security and cybersecurity. Among the topics covered are Security Design Principles, Threat Modeling, and Security Policy. Students gain a broad overview of Information Security and Privacy (ISP) through high-level ISP concepts. We discuss both traditional design principles and principles that were developed to design secure systems. We'll talk about several examples of insecure design and techniques to improve the design. We take an in-depth dive into creating models to measure potential threats. We also talk about risk and ways of managing and measuring the risk to assets. We conclude by taking an in-depth look at different security policy models, including the Bell-La Padula (BLP) Model, the Biba Integrity Model, Lipner's Model, and Clark-Wilson Integrity Model. Next, we consider the practical aspects of the implementation of the policy models.
      star_border star_border star_border star_border star_border
      In this course, you will learn the principles of C programming and start coding hands-on in a browser tool that will provide instant feedback on your code. The C programming language is one of the most stable and popular programming languages in the world. It helps to power your smartphone, your car's navigation system, robots, drones, trains, and almost all electronic devices. C is used in any circumstances where speed and flexibility are important, such as in embedded systems or high-performance computing. In this course, you will get started with C and learn how to write your first programs, how to make simple computations and print the results to the screen, how to store values in variables and how to repeat instructions using loops. Beginners, even those without any programming experience, will be able to immediately start coding in C with the help of powerful yet simple coding tools right within the web browser. No need to install anything! We are excited to introduce you to the world of coding and launch you along your path to becoming a skilled C programmer! This is the first course in the C Programming with Linux Professional Certificate program. This series of seven short courses will establish your programming skills and unlock doors to careers in computer engineering. This course has received financial support from the Patrick & Lina Drahi Foundation.
        star_border star_border star_border star_border star_border
        As the Internet of Things (IoT) continues to grow so will the number of privacy and security concerns and issues. As a professional working in the field, it is essential to understand the potential security risks and how to best mitigate them. In this course, you will learn about security and privacy issues in IoT environments. We’ll explore the organizational risks posed by IoT networks, and the principles of IoT device vulnerabilities. We’ll also look at software and hardware IoT Applications for industry. With billions of devices tracking our every move, privacy is a critical issue. We will explore and discuss the social and commercial implications the IoT brings to society.
          star_border star_border star_border star_border star_border
          Want to produce and record your own music? This course will help you do that by showing you how to apply new technologies to your own creative practice, using freeware and browser based apps. Music Technology Foundations draws on Adelaide’s world-class pioneering expertise in making electronic music, to provide a great foundation to a career in music and to enable any learner to use technology in creative ways. In this course, you’ll learn about the core principles of music technology, including sound, audio, MIDI, effects and sequencing.
            star_border star_border star_border star_border star_border
            Improvements in modern biology have led to a rapid increase in sensitivity and measurability in experiments and have reached the point where it is often impossible for a scientist alone to sort through the large volume of data that is collected from just one experiment. For example, individual data points collected from one gene expression study can easily number in the hundreds of thousands. These types of data sets are often referred to as ‘biological big data’ and require bioinformaticians to use statistical tools to gain meaningful information from them. In this course, part of the Bioinformatics MicroMasters program, you will learn about the R language and environment and how to use it to perform statistical analyses on biological big datasets. This course is part of the Bioinformatics MicroMaster’s program from UMGC. Upon completion of the program and receipt of the verified MicroMaster’s certificate, learners may then transition into the full UMGC Master’s Program in Biotechnology with a specialization in Bioinformatics without any application process or testing. See the MicroMasters program page for more.
              star_border star_border star_border star_border star_border
              In this course, you will learn what AI is and understand its applications and use cases and how it is transforming our lives. You will explore basic AI concepts including machine learning, deep learning, and neural networks as well as use cases and applications of AI. You will be exposed to concerns surrounding AI, including ethics, bias, jobs and the impacts on society. You will take a glimpse of the future with AI, get advice for starting an AI related career, and wrap up the course by demonstrating AI in action with a mini project. This AI for Everyone course does not require any programming or computer science expertise and is designed to introduce the basics of AI to anyone whether you have a technical background or not.
                star_border star_border star_border star_border star_border
                Experimentation is a key capability for any business to develop and master. Learn how to leverage data to build knowledge and apply this knowledge to improve business outcomes and create strategic advantages. This course is part of both the Digital Product Management and Digital Leadership MicroMasters programs. In it, you will learn to develop iterative business experiments using agile methods. This capability is central to digital businesses as it allows them to sustain competitive advantage through both incremental improvements as well as significant, disruptive innovations when opportunities and conditions warrant them. This course focuses on experimentation across the three layers of a digital business: (1) the capacity of the technical infrastructure to provide an iterative and operational process that uses experiments to gather data and develop knowledge (2) the ability to use agile methods and manage the knowledge interfaces among experts at the organizational layer to derive insight from data to create knowledge and ultimately drive improvements in products and processes. (3) the capability to use the technical and organizational infrastructures to drive experimentation at scale in order to deliver digital transformation.
                  star_border star_border star_border star_border star_border
                  JavaScript is the programming language of the World Wide Web. As a professional web software developer, you will not only need to know how to program in this simple yet powerful language, but you will need to understand the fundamentals of how data is exchanged on the World Wide Web (WWW) and what tools and frameworks are available to you for creating robust, interactive web applications. This course, part of the CS Essentials for Software Development Professional Certificate program, provides an introduction to modern web development using JavaScript. In addition to exploring the basics of web page creation using HTML and CSS, you will learn advanced web page layout and responsive design tools such as Bootstrap. You will also learn how browsers represent a web page data using the Document Object Model (DOM) and how to develop dynamic, interactive web pages using JavaScript in the browser. Beyond fundamental JavaScript syntax and advanced language features such as callbacks, events, and asynchronous programming, you will work with jQuery, which provides functionality for simplified DOM manipulation and event handling. This course will also introduce you to modern web frameworks and component-based libraries such as React.js for efficiently developing modular web page components, and D3.js for creating data-driven documents. We will also teach you how to represent and exchange data using JavaScript Object Notation (JSON), and how to access RESTful APIs on the web. Server-side JavaScript is becoming more prevalent in the industry, with web frameworks such as Node.js and Express making it simple to create and deploy complex, data-driven web applications. This course will prepare you to use such frameworks and show you how to integrate them with NoSQL databases such as MongoDB.
                    star_border star_border star_border star_border star_border
                    How do you optimally encode a text file? How do you find shortest paths in a map? How do you design a communication network? How do you route data in a network? What are the limits of efficient computation? This course, part of the Computer Science Essentials for Software Development Professional Certificate program, is an introduction to design and analysis of algorithms, and answers along the way these and many other interesting computational questions. You will learn about algorithms that operate on common data structures, for instance sorting and searching; advanced design and analysis techniques such as dynamic programming and greedy algorithms; advanced graph algorithms such as minimum spanning trees and shortest paths; NP-completeness theory; and approximation algorithms. After completing this course you will be able to design efficient and correct algorithms using sophisticated data structures for complex computational tasks.