Fundamentals of Software Development
This module introduces students to the essential principles and practices of software engineering, covering a broad range of topics from software development life cycles to programming paradigms and data structures. It provides students with the foundational skills to design, develop, and maintain software, employing best practices and industry standards.
Among the topics included in this module are: software development life cycle (SDLC), SDLC methodologies, agile methodologies, programming fundamentals, assembler programming, object-oriented programming, and quality and test management.
You will cover:
- Introduction to Software Development: Overview of the software development landscape, the Software Development Life Cycle (SDLC), and its objectives.
- Software Development Lifecycle: Stages of the SDLC, tools, techniques, and best practices.
- SDLC Methodologies: Waterfall, Iterative Waterfall, V-Model, Spiral, and Agile methodologies.
- Agile Methodologies: Principles and practices, including Scrum, Kanban, and eXtreme Programming.
- Analyzing Software Requirements: Gathering and analyzing requirements, using wireframes and flowcharts, and documenting requirements.
- Programming Fundamentals: Evolution of computing systems, basic electronics and binary, operating systems, and talking to the CPU.
- Assembler Programming: Introduction to NASM assembler, registers, data, control flow, and reusable functions.
- C++ Programming: Data types, pointers, control flow, object-oriented programming, file handling, and exception handling.
- C# Programming: Introduction to a managed language covering syntax, architecture, value and refernece types, garbage collection and Obect Oriented features including interfaces and delegates.
- Python Programming: Variables, control flow, object-oriented programming, and file storage.
- Quality and Test Management: Quality policies, testing methods, and test planning.
- Testing and Debugging: Unit testing, debugging, and Test-Driven Development (TDD).
- Data Structures: Arrays, linked lists, stacks, queues, trees, binary search trees, heaps, and graphs.
- Algorithms: Algorithm design, sorting algorithms, and Big O notation.
- Programming Paradigms: Procedural, functional, object-oriented, event-driven, and reactive programming paradigms.
- Code Quality: Coding standards, tools, and practices for maintaining high code quality.
- Standards in Software Development: The importance of following standards and becoming standards-compliant in software development.
Delivery
All resources can be found on Blackboard.
Assignment Brief
Component A: Practical programming project
Students will design, implement, test, and document a complete software solution to meet business requirements. The project will assess skills in coding, software design, and debugging using industry standards.
Component B: Technical interview (15 minutes)
Students will present their software project, justify their methodology, and answer questions on core software engineering concepts, including software development methodologies, programming paradigms, and quality assurance.