Introduction to Software Engineering

This course provides an overview of software development, including the software development life cycle, software testing, software maintenance, and software requirements engineering. It is designed to introduce students to the fundamental concepts of software engineering, and to help them understand the importance of software development in various industries.

2 Credits

2 weeks

SDE 801

Content

The course encapsulates an overview of the principles, processes, and tools used in the field of software engineering.

The topics that will be covered include the basics of software engineering concepts including software design, software architecture, and modelling, as well as software development methodologies, such as Agile and Waterfall.

Over the duration of this course, students will work their way through the following topics:

  • Overview of software engineering and its importance
  • Software development life cycle
  • Introduction to agile software development methodology
  • Overview of requirements engineering concepts
  • Overview of software design principles and patterns
  • Introduction to software testing and quality assurance
  • Configuration management and version control
  • Introduction to project management techniques for software development
  • Introduction to software maintenance and evolution
  • Introduction to ethical and social issues in software engineering.

Outcomes

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

  • Explain the fundamental concepts of software development, including software engineering principles, software development life cycle models, and software testing methodologies.
  • Develop basic software applications using one or more programming languages, such as Java or Python, and apply basic software engineering techniques such as modular design, version control, and unit testing.
  • Identify and apply software development tools, such as integrated development environments (IDEs), debuggers, and build automation tools, to improve the efficiency and quality of the software development process.
  • Analyse and evaluate software requirements, including functional and non-functional requirements, and create software designs that meet these requirements using standard modelling techniques, such as UML.
  • Collaborate effectively in a software development team by applying agile software development principles, using project management tools such as Kanban boards and issue trackers, and communicating effectively with team members and stakeholders.