Gain the systematic knowledge required to be a software developer.
In this professional certificate program, you will learn essential computer science concepts for software development ranging from the fundamentals of object-oriented programming to using efficient algorithms to design high-quality software.
This program will give you a thorough understanding of core principles of professional software development.
Courses under this program: Course 1: Software Development Fundamentals
Learn the fundamentals of object-oriented programming in Java, as well as best practices of modern software development.
Course 2: Algorithm Design and Analysis
Learn about the core principles of computer science: algorithmic thinking and computational problem solving.
Course 3: Data Structures and Software Design
Learn how to select, apply, and analyze the most appropriate data representations in your code and design high quality software that is easy to understand and modify.
Software developers are in high demand in the current job market, and computer programming is a prerequisite skill for success in this field.
Start your journey toward becoming a professional software developer by learning Java, one of the industry’s most commonly used programming languages.
This course, part of the CS Essentials for Software Development Professional Certificate program, will quickly cover Java syntax and keywords and then explore features of object-oriented programming including encapsulation, inheritance, and polymorphism. You will learn how to apply these concepts to programmatic problem solving by investigating class modeling techniques and relationships such as aggregation, realization, and generalization.
In addition to programming, you will learn about software testing techniques that help us find problems in our code, and you will use modern development environments and tools for tasks like debugging and unit testing. We will introduce Eclipse, the eclipse debugger and Junit (a unit testing framework).
After completing this course, you will be able to design, develop, and test large applications in Java and understand and apply core principles of professional software development.
Knowing how to code is only part of the skills needed to become a professional software developer.
This course, part of the CS Essentials for Software Development Professional Certificate program, will take your skills to the next level by teaching you how to write “good” software that appropriately represents and organizes data, is easy to maintain, and is of high quality.
As the purpose of most computer programs is to manipulate data, sometimes large quantities of it, the manner in which programs represent and organize data can have an enormous effect on the simplicity and efficiency of the code. In this course, you will learn about important core data structures such as arrays, lists, stacks, queues, sets, maps, trees, and graphs, and learn how to evaluate them and reason about their behavior and efficiency.
Most importantly, you will learn how to determine which data structure is the most appropriate for solving the problem at hand, and see how to use the implementations that are part of the Java library.
However, choosing the right data structure is only part of the challenge of developing high quality software: you must also consider the design of the classes that use those data structures. You will learn about software design principles such as modularity, functional independence, and abstraction, and apply those concepts toward writing programs that are easy to understand, easy to modify, and easy to test.
Although it is important to know how to write high quality code, professional software developers often spend a majority of their time maintaining existing code. You will also learn about software refactoring techniques for improving the design of existing code, and see how to improve code efficiency.
This course will use Java but the concepts you learn can be applied to almost all modern programming languages.
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.
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.
Chris Murphy, Sampath Kannan, Swapneel Sheth and Arvind Bhusnurmath