Software Development Track

Software Development  is at the core of Digital Transformation of organizations.  Pursuing a career in Software Development means joining a booming industry where available jobs outnumber qualified candidates.

This track will help you acquire core skills required for developing enterprise-grade applications, including programming responsive front ends using frameworks, designing and architecting scalable software backends using state of the art design patterns, as well as continuously testing improving and deploying applications while in production.

The Software Development track opens us a whole range of career paths in the software industry. As a software developper you can take on positions as diverse as a Front-end developer, Back-end developer, Full-stack developer, Mobile app developer, Cloud app developer, software architect or DevOps engineer.

Software Development majors take a full year of core computer science courses such as Programming, Databases, Algorithms, and Computer Organization and Operating systems.

In their second year they take courses such as Software engineering, Web app development, cloud and mobile app development, and DevOps.

The second year culminates in conducting a Capstone project.

The courses are designed to help students build a portfolio of executed projects and help prepare them for Certified Software Development Professional (CSDP) certification from the International Society of Software Engineering (ISSE).

Course Curriculum

Second Year Courses
SE01 Modern Software engineering
This course introduces software engineering principles. It covers the main phases of the software lifecycle, such as requirements, design, implementation, and testing, then moves on to cover Agile life cycle development approaches. Focus is then shifted to formal approaches for Modelling, Analysis, and Design.
SE02 Back-end Software Development
This course emphasis the use of the different Software Design Patterns and RESTful APIs for the development of enterprise-grade web applications with performance and modularity in mind. It also covers other important aspects of Web applications such as access control and administrability. Students will use Django as a framework for learning such aspects of modern Web app development.
SE03 Cloud and mobile Application Development
This courses covers 2 separate, but complementary parts, namely Cloud application development and Mobile applications Development. In the first part, it introduces the fundamentals of cloud development and deployment. A cloud platform of choice (AWS) will be used to practice the skills acquired by the students; in particular, this part will cover the concepts of microservices, Kubernetes, and serverless technology. The second part of the course introduces mobile application design and development. In particular, it will cover the design of UI, data persistence, and accessing web services. Students will practice on the Android platform.
SE04 Software Testing
This course introduces the fundamental concepts of software testing. Topics include unit tests, integration tests, system tests, and acceptance tests as well as function tests, performance tests, Black box, grey box, and black box tests. A popular testing tools namely JMeter and/or Selenium will be used by students to gain hands-on experience in testing industry-grade applications.
SE05 DevOps
This course introduces the students to the fundamental principles of DevOps which are behind automated build, test, and deployment of real-world applications. Topics include source control management, continuous development and integration, unit and functional testing, configuration management and monitoring, collaborative software development, and code quality control. Students will practice their skills using Docker, GitLab and Puppet.
CA01 Preparation for Capstone
The course is run as a seminar. It aims to help students (I) Identify a real-world project idea for their Capstone or joint Capstone/Internship and (II) Identify and prepare for an appropriate certification.
CA02 Capstone
The Capstone is a 2-term effort. Students can either (I) Pursue the development of a large-scale real-world project to consolidate the knowledge and skills acquired throughout the program and enrich their employment portfolio, OR (II) Engage in preparing and taking a certification exam. Students opting for developing a project can do so as a combined Capstone/Internship and/or benefit from UM6P StartGate ecosystem for startup incubation and acceleration and will have to submit a final report. Students choosing to prepare for certification will have to submit the results of the certification exam. All students will have to periodically report progress to the Capstone coordinator.