TJTS4003 Digital Systems Design, Development and Deployment (DS3D) (5 cr)
Tweet text
Description
Course contents:
Digital system’s development is a creative activity. It requires a combination of knowledge, insights, and skills to deliver the required outcomes for each unique project. The topics in this course are grouped into typical ‘phases’ of developing a digital system.
Module 1: Basics of system development:
The main goal of this phase is to understand the concept of a process model to describe the system development process and understand the difference between traditional heavy weight process (e.g., waterfall model) Vs light weight process (e.g., Agile), and when to adopt a certain model. This phase will also focus on requirements analysis and risk management techniques.
1. Software process models: Traditional, Agile and Hybrid, their differences and comparison.
2. Requirements analysis and user centered design: Describe the differences between elicitation, specification, validation and documentation of requirements, understand the differences between system and user requirements and between functional and non-functional requirements, use natural language and graphical representations of requirements within a requirements document and produce a system model based on requirements after prototyping, modelling and simulation.
3. CMMI and maturity models
4. Risk and threat analysis and mitigation: Understand and mitigate the impact of risk in software projects by performing risk identification, analysis, planning and monitoring, and mitigate threats by conducting threat modelling and mitigation strategies.
5. Planning the cost, time, and effort: Estimating, planning, and tracking agile (iterative and incremental) software projects, managing stakeholder expectations and requirements change management, make trade- offs between competing priorities of cost, schedule and quality, understanding business concerns and overall business goal.
Module 2: Digital Transformation:
Digital transformation is crucial in IT because it enables organizations to adapt and thrive in today's rapidly evolving digital landscape. By embracing digital transformation, organizations can better align with business goals, drive competitive advantage, and meet the ever-changing demands of customers and stakeholders. Overall, this module focuses on digital transformation as not only a strategic imperative but as a fundamental necessity for organizational success in the digital age.
1. Introduction to digital transformation (DT): Definition and scope of DT, critical drivers of DT, historical context and evolution of DT in IT.
2. Key concepts and principles of DT: Core principles, digital disruption and its impact on traditional industries, digital ecosystems – platforms, APIs etc., business models and value creation in the digital age.
3. Digital technologies and enablers: enablers of DT – cloud computing, IoT, AI/ML and Blockchain, integration strategies for leveraging DT, security and privacy concerns in DT and mitigation strategies.
4. DT in systems development: Continuous Integration (CI) and Continuous Deployment (CD) pipelines, DevOps culture and practices, containerization and microservices architecture.
Module 3: Configuration management in systems development:
In this phase, the students would learn about system configuration and change management frameworks to deploy and maintain digital systems.
1. Introduction to configuration management (CM): Definition and importance of CM, techniques and principles of configuration identification, tools and best practices for configuration management, configuration items and change management.
2. Configuration control: Principles of configuration control, change management processes and procedures, change request lifecycle and workflow, impact assessment and risk management in configuration changes.
3. Configuration management in Agile environments: Integration of CM practices with Agile principles, Infrastructure as Code (IaC) and Configuration as Code (CaC) principles, challenges, and best practices for CM in fast-paced environments.
4. Future trends in CM: Emerging technologies and trends shaping the future of CM, Impact of cloud computing, containerization, and microservices on CM and AI-driven approaches to CM.
5. DevOps: This topic will introduce the basic concepts of DevOps to students, particularly in understanding the dynamics of continuous SE principles and practices, quality management in DevOps environment, multi- cloud operations, introduction to MLOps (the continuous pipeline from data to machine learning model in production) and adoption challenges in DevOps and ways to address these challenges. Students will also be exposed to a set of basic DevOps tools.
Module 4: Introduction to cloud infrastructure:
1. Introduction to cloud computing: Definition and core characteristics of CC, service models (IaaS, PaaS, SaaS), deployment models (public, private, hybrid and community) and evolution of cloud computing.
2. Cloud services and platforms: Introduction to major cloud service providers (AWS, Azure, etc.), serverless computing, managing services offered by cloud platforms and application development and deployment.
3. Cloud migration and management: Strategies for cloud migration (lift and shift, refactoring and reprogramming) challenges and considerations in cloud migration projects, cost management and optimization, case studies on cloud migration projects.
4. Advanced topics and future trends in CC: Emerging trends and innovations, impact of AI/ML and quantum computing on cloud infrastructure, edge computing and internet of things, use of microservices architecture, IaC and orchestration toold (e.g. Kubernetes etc.).
Learning outcomes
This unit will cover all the fundamental principles of digital system project analysis, design, development, and maintenance across all the stages/ or phases of system’s development. The students will learn to understand, analyze, and apply the processes, methodologies and standards used in managing the full software development cycle, and understand how management and development practices affect overall software quality from the developer’s perspective. This course will also help students to develop a critical understanding and applications of the tools, techniques and processes used to manage software-intensive digital projects.
At the end of the unit the student will be able to assess a software development situation and choose an appropriate development strategy, know basic methods to estimate work efforts and production costs in software development projects and be aware of ethics in software development.
After completing the unit, the student can apply for the position of team lead or participate in a project as project manager.
Additional information
Course Delivery Model:
I believe the most effective learning experience for this course can be achieved by implementing a remote-teaching delivery model, considering the course structure, teaching approach, and desired learning outcomes.
- Under this model, students will have the flexibility to participate remotely as per their work schedule.
- A synchronous approach is crucial because it allows me, as the instructor, to actively engage in student discussions and assist them in grasping the subject matter, encourage critical thinking, promote the exploration of innovative solutions, and foster a dynamic learning environment.
- To ensure accessibility and referenceability, I plan to record all in-class discussions for students to revisit as needed.
- Any questions or concerns can be addressed through our learning management system, such as Moodle, using discussion threads and peer feedback.
The Teaching Approach:
Project-Based Learning approach: The course will adopt a project-based learning approach, with the aim of structuring and aligning the learning outcomes withing real-world context. Within this approach, I would contribute by presenting one or more real-world problems to the students – either in the form of one complete project or individual task to enhance the learning of that day. Subsequently, students are tasked with designing, developing, testing, and implementing solutions, leveraging their creativity, and applying the concepts and topics discussed during lectures.
This approach equips students with the ability to transfer their learning to a diverse range of similar yet inherently distinct problem contexts. The advantages of adopting this project-based learning approach are as follows:
- Students gain hands-on experience in tackling genuine IT problems, as opposed to contrived scenarios with limited relevance.
- Solutions and generated artifacts (e.g., elicited requirements, use cases, models, and architectural decisions) at each incremental stage are evaluated to guide students' progress.
- As the instructor, I provide continuous feedback after each iteration, enabling students to enhance their skills and successfully complete the course.
- This approach encourages students to explore their creative potential and develop innovative solutions for future projects.
- The project, with its predefined milestones, ensures that students have a clear schedule for the development of specific software artifacts.
- Students collaborate in diverse teams, fostering essential skills in communication and cooperation, which are crucial for professional growth.
- This project-based learning approach not only enriches students' practical experience but also prepares them for the dynamic challenges they will face in the software industry.
Research-Oriented Teaching: I incorporate my research findings into this course, focusing on topics like requirements engineering and software design. During class discussions, any new insights become potential research hypotheses. Students' in-class tasks serve as data collection for testing these hypotheses.
To keep the course content current, I regularly update it with the latest research from colleagues and other experts in the field. This ensures students receive up-to-date and relevant information.