Software Development in Practice

This course provides students with the skills and knowledge necessary to develop software solutions that meet real-world needs. It emphasizes the importance of effective software development practices such as testing, debugging, and code review, and introduces students to modern software development tools and techniques. Students learn how to work collaboratively in teams, manage project timelines and budgets, and communicate effectively with stakeholders.

2 Credits

2 weeks

SDE 809

Content

Throughout the course, students engage in hands-on coding exercises and projects, working with industry-standard programming languages and frameworks.

They gain practical experience in designing and implementing software solutions that meet the requirements of real-world clients, and receive feedback from facilitator and peers on their work.

By the end of the course, students are equipped with the skills and experience necessary to develop high-quality software solutions that meet the needs of end-users and stakeholders. Over the duration of this course, students will work their way through the following topics:

  • Agile software development methodologies (Scrum, Kanban, etc.)
  • Continuous integration and deployment practices
  • Test-driven development (TDD)
  • Code review and collaboration tools
  • Version control systems (Git, SVN, etc.)
  • Software design principles (SOLID, DRY, etc.)
  • Writing clean code and refactoring techniques
  • Debugging and troubleshooting techniques
  • Performance optimisation and profiling
  • Security best practices for software development
  • Cloud computing and serverless architecture
  • Developing for mobile platforms (iOS and Android)
  • Developing for the web (HTML, CSS, JavaScript, etc.)
  • Developing for desktop applications (Windows, MacOS, Linux)
  • Project management tools and methodologies (ClickUp, Trello, JIRA, Asana, etc.).

Outcomes

By the end of the course, students should be able to:

  • Develop software using industry-standard tools and technologies: Students should become familiar with commonly used tools and technologies in software development, such as integrated development environments (IDEs), version control systems, testing frameworks, and project management software. They should also learn how to select and apply appropriate tools and technologies for a given software development project.
  • Collaborate effectively in a software development team: Software development often involves working as part of a team, and students should learn how to communicate and collaborate effectively with their teammates. This may involve using collaborative tools such as issue trackers, code review systems, and chat programs, as well as practicing good communication and teamwork skills.
  • Write high-quality, maintainable code: Writing code that is easy to read, understand, and maintain is an important skill in software development. Students should learn how to write clean, well-structured code that adheres to established coding standards and best practices. They should also learn how to write automated tests to ensure their code works as expected and can be easily modified in the future.
  • Plan, design, and implement software projects: Software development involves many different stages, from initial planning and design to implementation and testing. Students should learn how to create project plans, design software architectures and user interfaces, and implement working software solutions that meet user requirements.
  • Reflect on their own learning and practice: Finally, students should develop the ability to reflect on their own learning and practice and identify areas for improvement. This may involve writing reflective reports, engaging in peer review, and seeking feedback from instructors and mentors. By reflecting on their own learning and practice, students can continue to develop their skills and become more effective software developers over time.