Software Engineering Program

  • College of Computing & Information Technology |
  • English

Program Description

None

Learning Outcomes

  • • Choosing a career as a software engineer gives you opportunities to work in many different industries and fields, as nearly all businesses use software. Whether you enjoy finances, entertainment, real estate, automotive, manufacturing, public utilities or some other industry, there is a good chance there are jobs for software engineers. • It is also a career that allows flexibility in where you work. You may be able to work from home for companies in other states or even other countries. The important thing is that you are able to meet deadlines and deliver a project on time. • Once you become a software engineer, you can choose which path you want to take (applications or systems) and how far you want to progress with it. You can decide to advance toward a role as a senior software engineer, or you can continue gaining certifications and experience to advance to roles like project manager, systems manager, product manager, or software quality manager. As a software engineer, you have both flexibility and mobility to create the career experience that is most appealing to you. • Working as a software engineer can be challenging and engaging, and it also tends to pay well. The annual median salary for a software engineer in 2020 was $110,140, according to the Bureau of Labor Statistics, USA (https://cutt.ly/gHjzl65). • Our curriculum is established in accordance with the guidelines developed by the Joint Task Force on Computing Curricula, the IEEE Computer Society, and the Association for Computing Machinery (ACM), on the core topics that software engineering should focus on. • Our program offers a specialized professional training track in Software Testing, which is highly demanded in the market. The professional training track courses provide students with hands on experience and 4 certifications needed for easy and quick entry to the market. • Faculty members of high caliber, knowledgeable in a broad range of modern SE Fields. Lecturers are PhD holders from highly ranked international universities, who pursue latest research and have a body of publications in respected journals. They are cooperative and willing to dedicate contact hours with the students. • Students are able to gain hands-on experience that facilitates their penetration into the job market, through case studies, real life applications and projects in the courses. In addition, the department provides off-campus training opportunities for the students in national and international computing companies. • Periodic workshops and seminars are carried out by the department, to allow the students to meet prominent figures in the computing industry and learn from their experience.

Markets and Career

  • If you enjoy solving problems and have strong analytical skills, a career as a software engineer can be both fun and challenging. Furthermore, as technology continues to evolve, the need for software engineers continues to grow (much faster than average, according to the U.S. Bureau of Labor Statistics). Moreover, software engineering skills, tools and techniques are used to govern the software development life cycle that is applied in a diverse set of domains such as: Web/Mobile development, Scientific Development, Business Development, IoT systems or Artificial Intelligence enabled Systems. A software engineer's career opportunities could look something like this: • Junior Software Engineer: Junior software engineers are entry-level members of a software development team. They assist the team with basic tasks under the supervision of their seniors, such as learning base code and writing simple code, and debugging existing software (Web/Mobile). • Lead Software Engineer: Lead engineers are consulted for guidance and direction by other engineers and programmers, and the role is seen as a mid-level management position. Lead engineers still write code, but also collaborate with others regarding workflow priorities and implement final decisions. They have years of programming experience, expertise in a specific subject matter, and can think of, plan, and build appropriate software to solve complicated problems. • Technical Architect: Architects still write code occasionally as well; however, they are mainly responsible for designing complex systems that other developers will implement. The role of architect is a technical one and not usually a steppingstone to something more - often thought of as the highest position on the technical side of things. • Requirements Engineer: responsible for the analysis, documentation, coordination, and management of requirements regarding new software projects. They identify and understand the customer's project-specific demands and document them in a clear and binding way. • Product Manager: responsible for both product planning and product marketing. This includes managing the product throughout the Product Lifecycle, gathering and prioritizing product and customer requirements, defining the product vision, and working closely with engineering, to deliver winning products. • Software Test Engineer: responsible for evaluating software using automated or manual testing methods and analyzing the results. Strong analytical skills can help them navigate and break down complex software systems. • Software Quality Assurance (QA) Engineer: responsible for every phase of the development process to ensure that the design and software adhere to company standards. A software quality assurance engineer helps meet deadlines by breaking up the development process into attainable testing goals and relaying any issues back to the development and product teams or leaders. • Software Project Manager: responsible for the planning, scheduling, budgeting, execution, and delivery of software projects. They ensure the successful completion of all software projects and oversee the people performing work on the projects. Prepares reports for upper management regarding status of project. The successful candidate will work directly with clients to ensure deliverables fall within the applicable scope and budget. • Security Software Engineer: responsible for analyzing software designs and implementations from a security perspective٫ to identify and resolve security issues. Your duties will include the appropriate security analysis٫ defenses and countermeasures at each phase of the software development lifecycle٫ to result in robust and reliable software. • DevOps Engineer: A DevOps engineer acts as a fulcrum between development and operational teams, and basically forms the foundation of the entire dev ops environment. For development to go as planned, there needs to be an operational team ready to implement the IT structures, applications, and software enhancements that are created. Between these two teams, and coordinating the efforts of both, are DevOps engineers. A DevOps engineer introduces processes, tools, and methodologies to balance needs throughout the software development life cycle, from coding and deployment to maintenance and updates.

Admission Requirements

None

Tests & Prerequisites

None

Cooperation



Accreditation

Brief

Software engineering is a detailed study of engineering to the design, development, testing, and maintenance of software applications. Software engineers apply engineering principles and knowledge of programming languages to build software solutions for end users. Software engineering was introduced to address the issues of low-quality software projects. Problems arise when a software generally exceeds timelines, budgets, and reduced levels of quality. It ensures that the application is built consistently, correctly, on time and on budget and within requirements. The demand of software engineering also emerged to cater to the immense rate of change in user requirements and environment on which application is supposed to be working. More recently, it has evolved in response to factors such as the growing impact of large and expensive software systems in a wide range of situations and domains and the increased importance of software in safety-critical applications. Software engineering is different in character from other engineering disciplines due to both the intangible nature of software and the discontinuous nature of software operation. It seeks to integrate the principles of mathematics and computer science with the engineering practices developed for tangible, physical artifacts..

Code Title Prequisites
BA101 Calculus 1 None
BA113 Physics None
CS111 Introduction to Computers None
IS171 Introduction to Information systems None
LH135 English for Specific Purposes I (ESP I) None of LH130*
AR115 Visual Studies None
Code Title Prequisites
BA201 Calculus III BA102
BA203 Probability and Statistics BA102
CE216 Digital Logic Design CS111
CS202 Discrete Structures CS111
CS243 Object Oriented Programming CS143
Code Title Prequisites
BA304 Linear Algebra BA102
CS311 Theory of Computation CS202
CS333 Web Programming IS273
SE391 Project Management SE291
SE392 Software Requirements and Specifications SE291
Code Title Prequisites
CS481 Computers & Society 96CR+
SE401 Project I GPA>=2.0 & 96 CR
SE491 Software Component Design SE291
Code Title Prequisites
CS421 Computer System Security CS322, CE231
SE402 Project II SE401
SE492 Software Verification SE291

Start your Application

Start The Journey to your Career.