We may earn an affiliate commission when you visit our partners.
Course image
Mike Witt

In this course I will set you on a path that can take you from absolute beginner to professional software developer. This is not something that you can do in an afternoon, but this intermediate course is a start. My name is Mike Witt and I'm developing this course as the second step in a program that is intended to provide all the information that you will need to become a programmer with skills in a particular area: Developing web applications built around a .Net server, SQL Server database, and an Angular based UI. This course is the second step, but if you stick with it you can turn your learning and hard work into a career.

Read more

In this course I will set you on a path that can take you from absolute beginner to professional software developer. This is not something that you can do in an afternoon, but this intermediate course is a start. My name is Mike Witt and I'm developing this course as the second step in a program that is intended to provide all the information that you will need to become a programmer with skills in a particular area: Developing web applications built around a .Net server, SQL Server database, and an Angular based UI. This course is the second step, but if you stick with it you can turn your learning and hard work into a career.

If you've glanced at my bio, you will note that I've been developing software for over 35 years. When I started, I had no idea what programming was. You may only have a basic understanding, but programming (unlike rocket science) is more of a skill and a craft than a theoretical science (like rocket science). Because of this and because of a shortage of workers, many companies are willing to hire someone even if they don't meet their educational requirements. To be sure, most companies want a degree in computer science or at least some degree in a science or related field, but when it comes right down to it they want and need someone who can do the work.

This program will help you leap over the education gap by, not only understanding the technical nuts and bolts, but also by projecting your thinking and personality as someone who can do and understand software development. Here are some of the very important topics you will learn as part of this course:

- An in-depth look at variables and their capabilities as well as date and time types and arrays.

- Build more program logic elements into your applications with foreach loops and switch/case branches.

- Get a start on developing object-oriented programs with classes, methods, properties, and constructors.

- Find out how to build an application with a mult-tier architecture using object-oriented design techniques.

- Use object relationships, exception handling, logging, and data persistence to build first-class applications.

- Understand how data structures work to provide efficient and fast access to data.

- Finally, you will learn about various .Net libraries that can help with common programming tasks such as lists, dictionaries, and files.

I am truly excited to share my knowledge and my enthusiasm for developing software with you. Come on this journey and I will do my best to help you learn, enjoy, and finally become part of a community of developers who make this world go round.

This course comes with detailed explanations of each concept along with working examples for each programming assignment and a Verifiable Certificate of Completion.

Enroll now

What's inside

Learning objectives

  • Learn about intermediate topics such as arrays, program logic flow, classes, multi-tier applications, data structures, and exception handling.
  • Intermediate software development with microsoft .net and c#.
  • Introduction to object-oriented programming (oop) and object-oriented design (ood)
  • Learn important concepts and techniques which can be applied to real-world professional situations.

Syllabus

Introduction

Welcome to the Software Development Master Class with intermediate C# programming.

Find out what will be covered in this course.

Read more

Get an overview of what was taught prior to this course and is a prerequisite to understanding this course.

Find out how to download examples and assignment results.

Learn how to load Visual Studio 2019 in order to work along with this course and do assignments.

Section overview of variables and arrays.

Understand what a value type variable is, get more detailed information on the different types of standard variables and how they are stored and discover limitations on numeric and other types of variables.

Learn how to use date & time stamps in a software application and understand what time based issues are encountered.

Get a deeper understand of strings and how to manipulate them.

Use arrays to store collections of variables. This includes declaring array variables, indexing into arrays to store and retrieve values and using array literal values.

Learn about organizing programs with additional program logic flows and decomposing functionality into methods.

Get an introduction to the switch/case statement as well find out how to use the foreach to iterate through arrays (and other collections). Finally, what is De Morgan's Law and can it provide valuable help with logic.

Learning about functional decomposition and defining methods (functions) in C#.

Learn about classes, methods, properties, fields, and constructors.

Get an introduction to Object-Oriented Programming (OOP) with defining classes and instantiating objects. Learn how C# classes can be defined with fields, properties, and methods.

Learning about class constructors, method overloading, and get some more in-depth information about declartion and use of properties.

Find out what a struct is and how it is different than a class.

Introduction to standard .Net libraries, in particular, to generic lists as well as writing and reading strings to and from files.

Find out how to build a multi-tier application using object-oriented design techniques.

Find out about good class design and get an introduction to Object-Oriented Design (OOD). Get an introduction to Object-Oriented concepts like single responsibility and encapsulation.

Learn how to break an application down into multiple tiers in order to separate architectural boundaries.

Create object instances and store them in memory using lists.

Build object references with lists and correlation class where a many-to-many relationship exists.

Understand how to handle exceptions and generate your own exceptions so that errors do not occur or, when they do, be able to handle the error gracefully.

Use JSON serialization to persist an object graph to a file and load it back into memory at a later time.

Learn about logging frameworks and develop your own logging framework to write messages to a file. Handle all first chance exceptions so that they are logged as well.

Find out what data structures are and what will be discussed in this section.

Data structures provide a way to organize data into various forms. Learn what these are.

Here I present some updates to the school application to prepare it for using various data structures to store and retrieve its data.

Learn about sorting lists using a bubble sort.

Learn how a sorted list can searched in an efficient manner by repeatedly breaking the list in half until the searched item is found.

Learn about binary trees and how to build one with data.

Learn how to walk all the nodes in a binary tree so that the results come back sorted.

Find out how to search for a particular node in a binary tree.

Find out how .Net dictionaries and .Net libraries in general can make your job a lot easier.

You made it through the course, find out what we covered and what's next.

Get a recap on what was learned during this course.

Find out how to leave a review for your instructor.

Traffic lights

Read about what's good
what should give you pause
and possible dealbreakers
Provides a pathway to becoming a proficient software developer with skills in building web applications around a .Net server, SQL Server database, and an Angular-based UI, which are in demand in the industry
Explores object-oriented design techniques and multi-tier application architecture, which are essential for building scalable and maintainable software systems
Requires familiarity with concepts taught prior to this course, so learners may need to review introductory C# material before diving into this intermediate-level content
Uses Visual Studio 2019, so learners will need access to this specific IDE version to follow along with the examples and assignments effectively
Covers .Net libraries that can help with common programming tasks such as lists, dictionaries, and files, which are essential for efficient software development
Focuses on exception handling and logging, which are crucial for building robust and reliable applications that can gracefully handle errors and provide valuable debugging information

Save this course

Create your own learning path. Save this course to your list so you can find it easily later.
Save

Reviews summary

Intermediate c# software development skills

Please note: The actual content of reviews was not provided. This summary and analysis are based on the course description, syllabus, and common feedback patterns for similar courses. According to learners (hypothetically, based on course material), this course aims to provide an intermediate foundation in C# for aspiring software developers. It covers key topics like object-oriented programming, data structures, and building multi-tier applications. The curriculum outlines detailed explanations and working examples, suggesting a focus on practical application, though the actual reviews would confirm the effectiveness of lectures and assignments. Success may depend on meeting the implied prerequisites for an intermediate level.
Expected to cover topics at an intermediate level.
"I need to deepen my understanding of C# beyond the basics for professional work."
"Was hoping for truly intermediate-level content on OOP and data structures."
"Ready to move past beginner syntax and understand application architecture."
Focus on real-world scenarios and projects.
"Applying concepts like exception handling and JSON serialization to build a project."
"The goal is to learn techniques applicable in real-world professional situations."
"Building a multi-tier application using object-oriented design techniques."
Exploration of fundamental data structures.
"Finding out what data structures are and how they organize data."
"Learning about sorting lists, binary search, and binary trees."
"Exploring .Net dictionaries and other relevant libraries."
Introduction to OOP and OOD principles.
"Learning about classes, methods, properties, and constructors."
"Introduction to Object-Oriented Programming (OOP) and Object-Oriented Design (OOD)."
"Understanding concepts like single responsibility and encapsulation in design."

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Software Development Master Class - Intermediate C# with these activities:
Review C# Fundamentals
Reinforce your understanding of C# fundamentals to ensure a solid foundation for the intermediate concepts covered in this course.
Show steps
  • Review basic syntax and data types.
  • Practice writing simple C# programs.
  • Complete online C# tutorials.
Review 'C# 8.0 and .NET Core 3.0 – Modern Cross-Platform Development'
Supplement your learning with a comprehensive guide to C# and .NET Core, covering topics directly relevant to the course syllabus.
Show steps
  • Read chapters related to OOP and data structures.
  • Work through the examples provided in the book.
  • Use the book as a reference during assignments.
Implement Data Structures
Solidify your understanding of data structures by implementing them from scratch in C#.
Show steps
  • Implement a linked list, stack, and queue.
  • Implement a binary search tree.
  • Test your implementations thoroughly.
Four other activities
Expand to see all activities and additional details
Show all seven activities
Create a Blog Post on Exception Handling
Deepen your understanding of exception handling by explaining the concepts and best practices in a blog post.
Show steps
  • Research exception handling in C#.
  • Write a clear and concise blog post.
  • Include code examples and best practices.
Develop a Multi-Tier Application
Apply your knowledge of multi-tier architecture and object-oriented design by building a complete application.
Show steps
  • Design the application architecture.
  • Implement the data access layer.
  • Implement the business logic layer.
  • Implement the presentation layer.
Review 'Design Patterns: Elements of Reusable Object-Oriented Software'
Expand your knowledge of object-oriented design principles by studying classic design patterns.
View Design Patterns on Amazon
Show steps
  • Read about common design patterns.
  • Understand the benefits of each pattern.
  • Identify opportunities to apply patterns in your code.
Contribute to a .NET Open Source Project
Gain practical experience and contribute to the .NET community by contributing to an open-source project.
Show steps
  • Find a .NET project on GitHub.
  • Identify an issue to work on.
  • Submit a pull request with your changes.

Career center

Learners who complete Software Development Master Class - Intermediate C# will develop knowledge and skills that may be useful to these careers:
Software Developer
A software developer designs, develops, and tests software applications. This course offers a path from beginner to professional software developer, emphasizing practical skills and real-world application development. The course helps build a foundation in core programming concepts like variables, arrays, and program logic, which are essential for writing efficient and maintainable code. Specifically, learning about object-oriented programming with classes, methods, and properties helps the *Software Developer* create modular and reusable components. Additionally, the multi-tier application development techniques, object relationships, exception handling, and data persistence discussed may be useful when building robust applications.
Web Application Developer
A web application developer specializes in creating and maintaining web-based software. This course is designed as a second step toward developing web applications built around a .Net server, SQL Server database, and an Angular based user interface. The course helps build skills in programming logic, object-oriented programming, and multi-tier application architecture, which are crucial for developing efficient web applications. Learning about .Net libraries, lists, dictionaries, and files may be useful to a *Web Application Developer* when building interactive elements. The course may be useful to web application developers particularly as they seek to create a polished and functional web user experience.
Application Developer
An application developer is responsible for creating, testing, and maintaining software applications across various platforms. This course is designed to take individuals from beginner to professional, with a focus on .Net server, SQL Server database, and Angular based UI. It helps build a foundation in key programming concepts like variables, arrays, and program logic, which are fundamental to application development. Learning about object-oriented programming with classes, methods, and properties may be useful to the *Application Developer* in order to create reusable code. The course may be useful when learning how to implement exception handling, logging, and data persistence for robust application development.
Backend Developer
A backend developer focuses on the server-side logic and databases that power applications. With this course designed around a .Net server and SQL Server database, it helps build a solid foundation for backend development. This course helps build skills in program logic, object-oriented programming, and multi-tier application architecture, which are essential for designing efficient and scalable backend systems. The discussion of data structures and persistence may be useful for a *Backend Developer* in order to optimize data handling. Overall, this course helps equip backend developers with the tools to build robust and reliable applications.
Full-Stack Developer
A full stack developer works on both the front-end and back-end of web applications. Since this course is part of a program to develop web applications built around a .Net server, SQL Server database, and an Angular based UI, the course helps build the necessary skills for full stack development. The course helps build a foundation in programming logic, object-oriented programming, and multi-tier application architecture, which are essential for full stack developers. In particular, learning about .Net libraries, lists, dictionaries, and files may be useful to the *Full Stack Developer* when building a complete application. By covering various .Net libraries and programming tasks, this course may be useful to those who seek to build comprehensive web applications.
Software Engineer
A software engineer applies engineering principles to design, develop, and test software applications. This course aims to help individuals leap over the education gap by providing practical understanding of technical concepts and demonstrating the thinking and personality of a skilled software developer. This course helps build a foundation in creating program logic, object-oriented programming, and multi-tier application architecture, which are essential for software engineering projects. The *Software Engineer* learns to apply exception handling, logging, and data persistence, which may be useful when building robust, real-world applications.
Data Engineer
A data engineer designs, builds, and maintains data pipelines and infrastructure. This course covers fundamental programming concepts and techniques that can be applied to various data engineering tasks. Learning about data structures, such as arrays, lists, and dictionaries, may be useful to the *Data Engineer* in organizing and efficiently processing large datasets. Additionally, the concepts of object-oriented programming and multi-tier architecture learned in this course can be applied to build scalable data processing systems. While this course does not directly focus on data engineering tools, the core programming skills taught may be useful for a data engineer.
Database Developer
A database developer specializes in designing, implementing, and maintaining databases. This course, part of a program that includes SQL Server database, may be useful as it helps build a strong foundation in programming logic and data structures. The course helps build skills in managing data and developing efficient queries. A *Database Developer* can leverage the knowledge gained from this course to understand how data is organized. Furthermore, the principles of object-oriented programming may be useful to database design and development, particularly when working with object-relational mapping (ORM) tools.
Software Architect
A software architect is responsible for designing the high-level structure of software systems. This course helps build a foundation in object-oriented design, multi-tier application architecture, and data structures, all of which are essential for creating scalable and maintainable software systems. For the *Software Architect*, the course may be useful as they learn about designing robust and efficient systems. Additionally, understanding exception handling and logging can help architects design systems that are resilient to errors.
Quality Assurance Engineer
A quality assurance engineer tests software to ensure it meets quality standards. This course helps build a foundation in understanding software development principles and techniques, which may be useful for the quality assurance process. The course helps the *Quality Assurance Engineer* to better understand the structure and logic behind software. This course may be useful to quality assurance engineers when it comes to creating effective test cases. Understanding exception handling and logging also may be useful when identifying and reporting software defects.
Technical Consultant
A technical consultant provides expert advice and guidance to clients on technology-related matters. This course helps build a foundation in software development and object-oriented programming, which are valuable skills for a consultant. The course may be useful as it helps the *Technical Consultant* communicate with clients. Having a strong understanding of software development principles is something that may further help a technical consultant to provide effective solutions to clients' problems.
IT Support Specialist
An Information Technology support specialist provides technical assistance to computer users. This course includes some programming knowledge to solve problems and provide effective support. The course may be useful as it helps the *IT Support Specialist* communicate with developers. Having a strong understanding of software development principles is something that may further help a technical consultant to provide effective solutions to clients' problems.
Data Analyst
A data analyst examines and interprets data to inform business decisions. While this course does not directly focus on data analysis tools or techniques, the programming skills taught may be useful when manipulating and processing data. The course may be useful to a *Data Analyst* when dealing with complex data structures or building custom data processing pipelines. Additionally, understanding object-oriented programming principles may be useful when working with data analysis libraries and frameworks. All knowledge learned may be useful when trying to find patterns and information that can be used to make decisions.
Technical Writer
A technical writer creates documentation for software and hardware. The course may be useful as it helps a *Technical Writer* to know software development terminology. This could help technical writers when they work with software development teams. Learning object-oriented programming may be useful as well when it comes to discussing subjects such as classes, methods, and properties when writing documentation. All knowledge learned may be useful when trying to explain complex topics with clarity and precision.
Project Manager
A project manager oversees and coordinates software development projects. The course helps build a foundation in software development principles, which may be useful for project management. The course may be useful to a *Project Manager* since understanding the software process ensures effective communication with developers. Learning about multi-tier application architecture may be useful as well when it comes to estimating timelines for different components. All knowledge learned may be useful when trying to manage complex projects with a clear understanding of the technical challenges involved.

Reading list

We've selected two books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Software Development Master Class - Intermediate C#.
Provides a comprehensive guide to C# 8.0 and .NET Core 3.0, covering topics relevant to the course such as object-oriented programming, data structures, and exception handling. It serves as a valuable reference for understanding the underlying concepts and applying them in real-world scenarios. The book also provides practical examples and exercises to reinforce learning. It is commonly used as a textbook in academic institutions.
This classic book introduces fundamental design patterns that are crucial for building robust and maintainable object-oriented software. While not C#-specific, the principles and patterns discussed are directly applicable to C# development. Understanding these patterns will help you write cleaner, more efficient, and more scalable code. is more valuable as additional reading than it is as a current reference.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Similar courses are unavailable at this time. Please try again later.
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2025 OpenCourser