Crafting Software

The process of developing software involves the application of a number of interesting techniques and tools. We explore fundamental challenges associated with software engineering as we utilize many tools such as linters, debuggers, automated testing frameworks, integrated development environments, and version control systems that a software engineer uses. Here, you can gain software engineering experiences when completing practical assignments, and small and large-scale projects.



Weekly schedule of activities, practical assignments, and team-based software engineering projects.

Practical Assignments.

Short, hands-on assignments to explore software engineering tools and practices.

Team Projects.

Short-term and long-term projects to design, implement, test and deploy software as a part of a team.


Quizzes to reinforce software engineering concepts.


Slide decks with conceptual topics.


Small activities to reinforce conceptual understanding.

Read more