Topic: Advanced Software Development Concepts (https://academiccalendar.dal.ca/Catalog/ViewCatalog.aspx?pageid=viewcatalog&entitytype=CID&entitycode=CSCI+5308)
Instructor: Dr. Robert Hawkey (https://www.linkedin.com/in/roberthawkey?originalSubdomain=ca)
• Understood professional programming in an environment where quality is paramount.
• Understood the importance of integrating quality assurance into programming practices.
• Applied Agile methodology to develop this project.
• Used appropriate tools to automate builds, deployment and configuration.
• Understood GitFlow.
• Analyze and applied test driven development to the software project.
• Implemented the S.O.L.I.D. principles of object-oriented design (single responsibility, open/closed,Liskov substitution, interface segregation, dependency inversion).
• Understood and implemented the principles of cohesion and coupling and avoid their misuse.
• Understood how to write clean, readable code.
• Applied design patterns and analyzed the benefits of using existing code / APIs.
• Recognized code smells and refactored the code to avoid them.
• Understood the importance of establishing boundaries in the systems (i.e. data, business logic, display logic)
• Understood the importance of the consistent application of naming conventions.
• Understood the concept of technical debt and the long-term costs of bad code.
• Analyzed and improved the existing code through refactoring.
• Identified and addressed the fragility and inflexibility in code.