<img height="1" width="1" style="display:none" src="https://www.facebook.com/tr?id=1158815871129855&ev=PageView&noscript=1"/>

Software Design & Principles!

Our aim is to develop your skills to the level that you are able to design and develop large scale software applications from scratch. The course is designed to give you in-depth knowledge about every aspect of software development so that your software design and code are highly performant and bug free.





Batch begins on 16 Jan 2024





Program Schedule

16.1.2024 - Tue

Online Session at 6pm

18.1.2024 - Thu

Online Session at 6pm

23.1.2024 - Tue

Online Session at 6pm

25.1.2024 - Thu

Online Session at 6pm

30.1.2024 - Tue

Online Session at 6pm

1.2.2024 - Thu

Online Session at 6pm

6.2.2024 - Tue

Online Session at 6pm

8.2.2024 - Thu

Online Session at 6pm

13.2.2024 - Tue

Online Session at 6pm

15.2.2024 - Thu

Online Session at 6pm

20.2.2024 - Tue

Online Session at 6pm

22.2.2024 - Thu

Online Session at 6pm

27.2.2024 - Tue

Online Session at 6pm

29.2.2024 - Thu

Online Session at 6pm

5.3.2024 - Tue

Online Session at 6pm

7.3.2024 - Thu

Online Session at 6pm

Study Topics

Module 1 - Data Structure & Algorithms

Data Structures

In computer science, a data structure is a data organization, management, and storage format that enables efficient access and modification. From the development point of view, understanding data-structures provides analytical thinking and skills for programming that help you grow as a developer and analyse complex software problems.

During the first module, the course focuses on data structures such as arrays, lists, stacks, queues, hash maps, trees, and graphs. These data structures are the building blocks of any commercial, large scale software product and therefore questions related to data-structures continually asked in interviews for software development jobs.


An algorithm usually means a small sequence of steps that takes in input data and produces a predefined output as a solution to a given problem. A search engine algorithm, for example, takes search strings of keywords and operators as input, searches its associated database for relevant web pages, and returns results.

Algorithms are widely used throughout all areas of software development including front-end and back-end software development. In the software domain, for almost every problem, there exist multiple algorithms that can provide a solution but as a software developer, you need to understand which algorithm provides the best solution in terms of the time it takes to produce the result and the memory and computational requirement it needs to produce the solution.

Due to the importance of given context for specific problem solving, it becomes essential that every software developer willing to build world class software products understand the algorithmic complexity and their usage.

During the course, we'll cover the most important aspects of algorithms such as BigO notation, complexity comparisons, time and space complexity, data structure complexities and how to use them in various contexts. The course also covers various sorting algorithms, searching algorithms and graph algorithms as understanding of these algorithms is required to work in the software industry.

Module 2 - Clean Code

Clean code is code that is easy to read, like a book where each word transforms into a picture and you can actually visualize everything like watching a movie, in short, should be readable by Humans. Clean code is easy to change, it doesn't do one thing over and over again and it is focused in a way that each function and class exhibits one responsibility that they have which remains completely independent of the surrounding classes and functions.

But most importantly, clean code can make you stand out of your competition in a coding interview. When you receive a coding challenge for a job, the reviewers of your code judge you based on how clean your code is. It distinguishes good developers from bad developers who do not understand the difference between modularity and spaghetti code.

Module 2 - Clean code is specifically designed to teach you the skills of writing clean code so that you can speed up your job search and start landing job offers from companies by showing them that you care for your code and you know how to write code for a commercial product.

Module 3 - Coding and behavioral interview skills

Interview skills can be divided between coding skills where an interviewer tests the skills of analysing a problem, thinking about a solution and then writing code for the solution, and the skills where the interviewer asks questions about industry practices and general aptitude about software technology and its processes.

Module 3 focuses on building knowledge base and skills from the ground up including all important questions about computer science and software technologies. The topics included in this module vary from multi threading, continuous integration and performance optimization techniques of Web Applications to REST Api best practices, SQL attacks and role of load balancers in large scale server farms.

This module prepares a candidate to discuss in depth software engineering techniques based on industry wide practices and also helps them prepare for real interviews by conducting multiple mock interviews by industry experts. Student's are offered several mock interviews that are recorded and later analysed by the course instructors so that students can improve on their strategy and weak spots.

Get the PDF version of complete syllabus sent to your email

Module 4 - Object Oriented Paradigm and Principles

Having learnt the basics of coding, the next step is to be able to analyse a problem and implement a software solution in a way that is scalable, modular and most importantly maintainable. Maintainability is one of the most important aspects of a software product and having a good design is key here.

Object Oriented Paradigm provides the basics of good design for your software solution. In the industry almost every software product is made based on the object oriented paradigm and it is essential to have expert level knowledge in object oriented paradigm.

During module 4, the course focuses on every aspect of object oriented paradigm and helps the student understand and apply object oriented paradigm in real world softwares. The course includes the following topics -

Object oriented programming concepts, functional programming, identifying classes, state and behaviour, HAS-A relation and IS-A relation between objects and classes. Inheritance, constructor chaining in inheritance, abstraction of details, encapsulation, polymorphism, object composition, HAS-A relation, Object Relations.

Object Oriented Principles

OO Principles provide a set of best practices while designing a software with Object Oriented Paradigm. These principles are essential guidelines that you should follow to keep the structure of your classes and interfaces clean and efficient.

The course teaches the Single Responsibility Principle, Open-closed Principle, Liskov substitution principle, Interface Segregation Principle. Dependency Inversion Principle.

Distributed App Architecture

A distributed app is one where several computational nodes work together to provide a service. These distributed apps are difficult to manage and difficult to architect for developers. Therefore, there exist multiple foundational architectural principles for distributed apps that this course would teach the students. These architectures include Model View Controller (MVC), Model-View View-Model (MVVM), Client-Server architecture for Web and Cloud softwares, Multi Tier architecture for large scale apps.

Module 5 - Design Patterns

Once you have understood how to build software solutions based on object oriented paradigm, it is time to learn from years of experience of experts and pay attention to the well known solutions to well known problems. That is where design patterns come into picture. The course teaches the students following design patterns.

Creational Patterns

Singleton Pattern

Factory Pattern

Builder Pattern

Prototype Pattern

Behavioral Patterns

Observer Pattern

Memento Pattern

Chain of Responsibility Pattern

Strategy Pattern

Visitor Pattern

Mediator Pattern

Structural Patterns

Decorator Pattern

Adapter Pattern

Bridge Pattern

Proxy Pattern

Composite Pattern

Module 6 - Database Design

Any large scale application like facebook, reddit or twitter is mainly focused on data storage and efficient processing of data from millions and billions of users. In the software industry even if you work specifically on the front-end, you will almost always be required to understand at least the fundamentals of the databases being used in your product.

In this course, students are taught the theoretical concepts of relational database design with tasks where they can test their understanding and also practice applying these concepts by creating database designs for software apps from scratch.

These concepts include ACID properties, Entity Relationship Diagrams, Relational Cardinalities, Functional Dependency, Normal Forms, BCNF Principles, Mapping Tables and Transaction Processing.

In addition, the students are also taught the modern NoSQL databases and the advantages and disadvantages of their usage in comparison to traditional relational databases.

Get the PDF version of complete syllabus sent to your email

Career Mentoring Sessions

In addition to the computer science and software development session, during the course students would also be offered sessions relating to Job Search and Career Mentoring.

Resume, Portfolio and LinkedIn Profile Building - Best Practices


The course includes special sessions about best practices for resume building and online presence optimization best practices for landing a job. During this session the instructor will go through all the industry standards for job search and help students stand out from the crowd by helping them avoid mistakes in their job application documents.

The session covers detailed information about -

  • Hiring Process
  • Header section of resume
  • Body of resume
  • Fonts and text size
  • Length of resume
  • Resumes for applying for multiple jobs
  • ...and other essential details


Portfolio is an essential requirement of today's job market. A portfolio of a developer looking for a job not only shows his coding and problem solving skills but it also shows his skills of UI/UX design. During the session we'll focus on best practices of creating a portfolio including -

  • Hosting
  • Design decisions
  • Code and Urls Inclusions
  • Accessibility and Icons
  • ...and other essential details

LinkedIn and Job Search Portals

LinkedIn as a platform provides one central place for all types of job opportunities. In order to be successful on any job search platform, it is important to understand how to best use the platform and how to get the attention of recruiters and hiring managers.

During the course at CDD, we help you understand how to make use of the job search platforms at best, how to optimize your profile for the jobs you want to apply and how to target jobs best suited to your profile and skills.

Technical Bonus Session

Technical bonus session is designed for students to request any topic of choice from related technologies which they would like the instructor to teach them. In the past students have requested topics such as Dijkstra's algorithms, Async Javascript api and Promises and Typescript etc.

In order to help you learn the best, you not only get the session on what you request but also get a video recording of every session that the CDD program has taught in the previous courses to previous students.

Interview Readiness

Mock Technical Interviews

Mock interviews are the best way to prepare for real interviews. At CDD, we provide you multiple mock interview sessions by software experts. The format of interview accurately simulates real interviews and you would be interviewed just like a real interview. In addition, the interviews will be recorded so that CDD instructors can analyse them and provide you tips on how to improve your performance.

The interview format includes coding questions, software technologies questions and also behavioral questions covering all aspects of a real life interview. Mock interviews are a great way to also train yourself to control any anxiety you might have and create your own strategy for cracking the interviews.

Behavioral Interview Questions and Answers

Where do you see yourself in 5 years? This is a signature question of all interviews. As a candidate you might have a natural answer to this question but your answer might or might not match what the interviewer is expecting.

As a candidate searching for a job you need to know how to best satisfy the expectations of interviewers and hiring managers. Having great technical skills is a must but behavioral interviews give you the last pass to get hired. At CDD, we'll help you ace behavioral interviews and make the best use of your communication skills. In the special session, we'll go throw multiple most frequently asked questions and their best suited answers.

Get the PDF version of complete syllabus sent to your email