Back to Courses

Computer Science Courses - Page 65

Showing results 641-650 of 2309
Introduction to Automated Analysis
This course introduces state-of-the-art techniques for automated analysis. Automated analysis encompasses both approaches to automatically generate a very large number of tests to check whether programs meet requirements, and also means by which it is possible to *prove* that software meets requirements and that it is free from certain commonly-occurring defects, such as divide-by-zero, overflow/underflow, deadlock, race-condition freedom, buffer/array overflow, uncaught exceptions, and several other commonly-occurring bugs that can lead to program failures or security problems. The learner will become familiar with the fundamental theory and applications of such approaches, and apply a variety of automated analysis techniques on example programs. After completing this course, a learner will be able to: - Understand the foundations of automated verification: randomization and symbolic representations - Distinguish the strengths and weaknesses of random testing, symbolic analysis, static analysis, and model checking - Use a variety of state-of-the-art static analysis and automated testing tools for automated verification - Create executable requirements as an oracle suitable for automated testing and symbolic analysis - Understand how the choice of oracle affects fault-finding for automated analysis strategies. - Use automated testing to achieve full mutation coverage - Create a test plan that utilizes both manually-written tests and automated tests towards maximizing rigor, minimizing effort and time, and minimizing test costs. This course is intended for learners interested in understanding the principles of automation and the application of tools for analysis and testing of software This knowledge would benefit several typical roles: Software Engineer, Software Engineer in Test, Test Automation Engineer, DevOps Engineer, Software Developer, Programmer, Computer Enthusiast. We expect that you have some familiarity with the Software development Life-Cycle, an understanding of the fundamentals of software testing, similar to what is covered in the Introduction to Software Testing and Black-box and White-Box Testing Courses. Familiarity with an object-oriented language such as Java or ability to pick-up Java syntax quickly to write and modify code, and willingness to use tools and IDEs are assumed.
Configure and Verify NAT on Cisco routers
Welcome to the CCNA 1.9: Configure and Verify NAT on Cisco routers. This project is the ninth in a CCNA learning series that is designed to help you acquire the hands-on skills required to pass the CCNA certification exam. In this 2-hour guided project, you will configure static and dynamic Network Address Translation (NAT) on Cisco routers, you will also setup NAT overloading with Port Address Translation (PAT), and verify NAT configuration on Cisco routers.
Python Data Structures
Data structures play a crucial role in application development. The proper selection of data structures is important for efficient algorithm development. The availability of a list, for example, greatly simplifies sorting a collection of data items. It would be difficult to do this without that data structure, as you will see. This is why Programming languages like Python have certain fundamental data structures built into the language. In this course, you will create a Python application that reads from a file containing words and their definitions. You will use Python’s built-in data structures to make a multiple choice quiz based on words and their definitions. Note: This course works best for learners who are based in the North America region. We’re currently working on providing the same experience in other regions.
SOLID Programming: Single Responsibility Principle in Unity
Programming of any kind, including in game-development, can get complicated as the size and scope of a project increase. Investigating bugs and expanding the code with new functionality can be almost impossible if the code-structure is not well-thought-out. In this one-hour, project-based course, we will cover the first principle of "SOLID" programming: Single Responsibility Principle ("SRP") states that a class should only be responsible for a single task. It sounds simple, but for many programmers, it's can be bit of a paradigm-shift. In the project, we will create some "typical" code that is fairly common in game-development, and then break it up to become compliant with SRP. This project is part one of a five-part series on SOLID Programming principles, which are: - Single Responsibility (this guided project) - Open-Closed - Liskov's Substitution - Interface Segregation - Dependency Inversion Each of these guided projects stands on its own, but for a full understanding of good coding practices, completing all five guided projects is recommended.
Application Programming Fundamentals
In Object-Oriented Concepts, we will introduce the core concepts behind modern, object-oriented, programming. We will discuss objects, classes, messaging, inheritance, polymorphism, and more. As with Fundamentals of Programming, we will illustrate the concepts using the Python language, but they will be portable to other object-oriented programming languages. This course includes hands-on labs where you will learn to write and execute programs.
Java Basic Structures: Arrays, Strings, and Files
Code and run your first Java program in minutes without installing anything! This course is designed for learners with limited coding experience, providing a solid foundation of not just Java, but core Computer Science topics that can be transferred to other languages. The modules in this course cover arrays, strings, and files. Completion of Java Basics: Selection and Iteration before taking this course is recommended. To allow for a truly hands-on, self-paced learning experience, this course is video-free. Assignments contain short explanations with images and runnable code examples with suggested edits to explore code examples further, building a deeper understanding by doing. You'll benefit from instant feedback from a variety of assessment items along the way, gently progressing from quick understanding checks (multiple choice, fill in the blank, and un-scrambling code blocks) to small, approachable coding exercises that take minutes instead of hours.
Web Application Technologies and Django
In this course, you'll explore the basic structure of a web application, and how a web browser interacts with a web server. You'll be introduced to the Hypertext Transfer Protocol (HTTP) request/response cycle, including GET/POST/Redirect. You'll also gain an introductory understanding of Hypertext Markup Language (HTML), as well as the overall structure of a Django application. We will explore the Model-View-Controller (MVC) pattern for web applications and how it relates to Django. You will learn how to deploy a Django application using a service like PythonAnywhere so that it is available over the Internet. This is the first course in the Django for Everybody specialization. It is recommended that you complete the Python for Everybody specialization or an equivalent learning experience before beginning this series.
M2M & IoT Interface Design & Protocols for Embedded Systems
This course can also be taken for academic credit as ECEA 5348, part of CU Boulder’s Master of Science in Electrical Engineering degree. M2M and IoT Interface Design and Protocols is the third of three classes in the Embedded Interface Design (EID) specialization, an online version of the on-campus EID class taught in graduate embedded systems design. This course is focused on connecting devices to each other and to the cloud to create prototypes and actual systems that flow data from devices to consumers. The class includes an introduction to M2M (Machine-to-Machine) and IoT (Internet of Things) concepts, using the cloud to develop IoT systems (specifically AWS (Amazon Web Services) and its IoT framework), a review of common communications protocols at every level of connected devices, and other IoT design concerns such as security, message queuing approaches, and the use and design of APIs and microservices . The content ranges from general design best practices to specifics for select tools and methods, but all are presented to support developing embedded devices in IoT applications. The class includes practical projects that let you try some of standard methods in software development of prototype graphical user interfaces for devices using AWS, Python, and optionally Node.JS. This course can be taken for academic credit as ECEA 5348, part of CU Boulder's Master of Science in Electrical Engineering degree.
Peer-to-Peer Protocols and Local Area Networks
In this course, we discuss peer-to-peer protocols and local area networks. Part one in this course is to answer the question of how does a peer-to-peer protocol deliver reliable data transfer service across unreliable transmission lines or networks. We focus on several medium access control protocols and their performance analysis. In the second part, we discuss how medium access control protocols coordinate the access to the communication channel so that information gets through from a source to a destination in the same broadcast local area network. We further discuss local area network and wireless LAN.
Advanced Programming in Kotlin
Get ready to expand on your Kotlin skills to create common advanced functionality that typical Android apps need. You’ll start off with lifecycle management, which will allow you to implement an app with an Activity. You’ll also practice more advanced object-oriented features of Kotlin by declaring an object in Android and implementing companion objects. This course will also introduce you to the basics of unit testing in Android to ensure that your applications function as intended. You’ll also dive deeper into the world of functional programming. Finally, you’ll create the functionality we see so often in apps with large lists of items, such as filtering features. You’ll create collection processing functions to process collections in different ways, even when there are multiple steps, and build your own list with filtering and sorting functionality.