WEEK 1
|
Deconstructing the software development process:
In this week, we will introduce the stages of software development through an exercise of deconstructing a large and complex software system (e.g. the Amazon shopping site). The main objective is to help learners think of software in terms of sub-systems, and what issues have to be considered in order to develop these sub-systems (e.g.: software architecture, security, testing, usability etc.).
Discussions in this week will motivate and provide pointers to parts of the software development process, which we will discuss in subsequent weeks.
|
WEEK 2
|
Software Requirements:
In this week, learners will be able to identify different types of requirements (functional, non-functional), and will go through tools and strategies which will help them capture requirements for a given problem (e.g. using user-stories, use-cases, SRS etc)
|
WEEK 3
|
Software Conceptual Design:
In this week, learners will learn how to create the software conceptual design from requirements. They will be introduced to the Function-Behaviour-Structure (FBS) framework, a popular framework which helps learners think about software design in terms of its functions, structures and behaviors. There will be hands-on activities in a learning environment, think&link. This will help learners map software design solution parts to the FBS framework, and come up with comprehensive and cohesive software designs.
|
WEEK 4
|
Software Usability:
In this week, learners will learn the necessity and importance of considering the usability of their designs. We will discuss various usability characteristics such as - Learnability, Efficiency, Satisfaction and Memorability, which have to be kept in mind while creating software.
|
WEEK 5
|
Software Design - Modelling and Architecture:
In this week, learners will learn how to detail their initial conceptual designs using Unified Modeling Language (UML) diagrams. We will discuss the philosophy and importance of modeling, and describe commonly used UML diagrams such as class and sequence diagrams. We will also describe essential design patterns such as client-server, MVC, P2P etc.
|
WEEK 6
|
Software Design - Quality and Evaluation:
In this week, learners learn about how to evaluate their software designs. There will be hands-on activities in a learning environment, VeriSIM. We also discuss important functional and non-functional quality attributes (such as correctness, reliability, security etc.) which have to be kept in mind while designing software systems.
|
WEEK 7
|
Software Development - Program Comprehension:
In this week, learners learn how to start working with source code. They will be introduced to popular IDEs, and will work on understanding an unfamiliar codebase (e.g. an open-source project like Mozilla). They will also learn about different program comprehension strategies which experienced software developers use as they navigate through code in large projects.
|
WEEK 8
|
Software Development - Program Debugging:
In this week, learners will be introduced to popular debugging tools, and strategies used by developers while debugging large programs. They will work on debugging certain errors in an unfamiliar codebase (e.g. an open-source project like Mozilla) which will help them apply the concepts learnt during this week.
|
WEEK 9
|
Software - Code Reviewing and Documentation:
In this week, learners will be introduced to version control systems such as Github. They will create a repository on Github and learn how to review other students’ code. They will also be introduced to good documentation practices.
|
WEEK 10
|
Software Testing:
In this week, learners will learn about various testing techniques, such as Unit Testing, Integration Testing, and System Testing. They will also explore various testing tools and use these tools to test existing software code.
|
WEEK 11
|
Software Deployment and Monitoring:
In this week, learners will understand how to deploy a software project on the cloud (e.g. using Heroku). They will also learn to observe and track the operations and activities of users, applications and network services after deployment, and learn how to identify and resolve issues after deployment.
|
WEEK 12
|
Conclusion and other Aspects: Communication, Productivity and Organizations:
In the final week, we will talk about other aspects of working in a software company, such as communication between teams, and factors affecting productivity of software developers. We also intend to conduct discussions with professionals from the industry, to provide learners with different perspectives of the software development process.
|