Course Description: This course builds on foundational programming and software engineering principles to explore advanced practices in software development. Students will learn best practices for writing maintainable, scalable, and efficient code in complex systems. Topics include software design patterns, testing strategies, continuous integration, version control systems, and agile development methodologies. Through hands-on projects and case studies, students will work in teams to simulate real-world software development cycles, including requirement analysis, system design, implementation, and testing. This course will also introduce students to emerging technologies in software development, such as containerization, cloud computing, and DevOps.
Prerequisites:
Completion of an introductory software development course (e.g., Software Development 101) or equivalent knowledge
Basic proficiency in programming languages like Python, Java, or JavaScript.
Learning Outcomes: By the end of this course, students will be able to:
Apply design patterns to solve common software engineering problems.
Implement testing strategies, including unit tests, integration tests, and automated testing frameworks.
Work effectively in a team using version control systems (e.g., Git) and continuous integration tools.
Understand the principles and practices of agile methodologies and implement them in software development cycles.
Deploy applications using containerization (e.g., Docker) and manage cloud-based deployments.