Department of Software Engineering Course Catalogue

Duration 3 Years
Level Graduation
Type Degree


B.E. Software Engineering or Bachelor of Engineering in Software Engineering is an undergraduate Software Engineering course. It is the application of a systematic and disciplined approach to the development, operation, and maintenance of software. Bachelor of Engineering in Software covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding and testing. The course combines a strong technical focus on project providing the opportunity to practice engineering knowledge, skills, and practices in a realistic development setting with a real client.
To qualify for an SWE at ATU, students are required to complete 3 years of full-time course work and the curriculum comprise nine semesters.

Course Requirements

Software Engineering
Year I Semester II
Code Course Credit Hours (15)
SWE111 Introduction to Software Engineering 3
SWE112 Introduction to Computer Applications 3
SWE113 Calculus I 3
SWE114 Introduction to Islamic Studies 3
SWE115 Academic Writing I 3
Year I Semester II
Code Course Credit Hours (15)
SWE121 Fundamental of Programming I(python) 3
SWE122 Introduction to Database Systems 3
SWE123 Calculus II 3
SWE124 Introduction to Data Communication and Networking 3
SWE125 Academic Writing II 3
Year I Semester III
Code Course Credit Hours (14)
SWE131 Fundamental of Programming II(java) 4
SWE132 Advanced Networking 3
SWE133 Introduction to Web Development 3
SWE134 Advanced Database Systems 4
Year II Semester I
Code Course Credit Hours (14)
SWE211 Object Oriented Programming 4
SWE212 Advanced Software Engineering 3
SWE213 Cyber Security 3
SWE214 Advanced Web Development 4
Year II Semester II
Code Course Credit Hours (14)
SWE221 C-Sharp 4
SWE222 Operating Systems 3
SWE223 Discrete Mathematics 3
SWE224 Management Information Systems 4
Year II Semester III
Code Course Credit Hours (14)
SWE231 Data Structure and Algorithms 4
SWE232 Microsoft System Admiration 3
SWE233 Linear Algebra 3
SWE234 4
Year III Semester I
Code Course Credit Hours (15)
SWE311 Advanced Java Programming 3
SWE312 Formal Language and Theory Automata 3
SWE313 Statistics 3
SWE314 Software Project Management 3
SWE315 Advanced Operating Systems (Linux/Unix) 3
Year III Semester II
Code Course Credit Hours (15)
SWE321 Compiler Design 3
SWE322 Multimedia 3
SWE323 Introduction to Entrepreneurship 3
SWE324 Research Methodology 3
SWE325 Mobile Web Development 3
Year III Semester III
Code Course Credit Hours (14)
SWE331 Computer Graphics 3
SWE332 Human Computer Interaction Engineering 3
SWE333 Senior Project 8


  1. Computer architecture and Organization
  2. Artificial Intelligence and applications
  3. Image Processing
  4. Robotics
  5. Digital Signal Processing
  6. Principles of Economics and Management

Course Descriptions

SWE111: Introduction to Software Engineering
Software engineering is the branch of computer science that creates practical, cost-effective solutions to computing and information processing problems, preferentially by applying scientific knowledge, developing software systems in the service of mankind. This course covers the fundamentals of software engineering, including understanding system requirements, finding appropriate engineering compromises, effective methods of design, coding, and testing, team software development, and the application of engineering tools.

SWE112: Introduction to Computer Applications
This course is an overview of Computer applications, historical development of computers, logical organization of a computer system, software, and data representation inside computers. Computer arithmetic, computer system architecture (Boolean algebra and logic circuits). Overview of computer networks & Computer security, Lab Introducing the use of MS Windows environment; Introduction to main MS application packages in that context – MS Excel, MS Word, MS access, MS power point, Introduction to using Internet.

SWE113: Calculus I
Calculus I is an introduction to differential calculus: the study of change. The course is designed for students working on a degree in Software Engineering and those planning on certain types of graduate work. SWE113 covers differentiation of algebraic, applications of the derivative, differentials,. The goal here is developing the student’s geometric insight into the concepts of differentiation, and applying these concepts to problem solving and “real world application”.

SWE114: Introduction to Islamic Studies
This course it is a religious subject of the religion of the people in Somaliland so it is essential that the youth of the country learn their religion. This subject is an important ethical issue for the Muslim community especially for the students because the student is the tomorrow’s leader of the country and must have an Islamic morality since we require them to serve their people honestly and justly. The course covers ethical issues such as security, trustworthiness, consultation, justice, generosity, patience, safeguarding promises and safeguarding your tongue. Therefore, this course is important for the whole community and especially for learners.

SWE115: Academic Writing I
This course develops further knowledge of the grammar and of essential vocabulary in order to lead the students to a better level of proficiency. Emphasis is placed on developing listening, speaking, reading and writing skills through an integrated approach. It focuses on grammar and fundamental writing skills. College English is a basic grammar course in which students study different grammar and discuss ways to formulate their writing. Peer revision, collaboration with class members, in-class writing activities, reading, identifying run on sentence and fragments, class discussion, and error pattern identification comprise the core requirements.

SWE121: Fundamental of Programming I (python)
This course is an introduction to the Python programming language for students without prior programming experience. We cover data types, control flow and object-oriented programming. Python is a language with a simple syntax, and a powerful set of libraries. It is an interpreted language, with a rich programming environment, including a robust debugger and profiler. While it is easy for beginners to learn, it is widely used in many scientific areas for data exploration.

SWE122: Introduction to Database Systems
This course is assumed to be the first course in database management systems. It starts by introducing what database and database systems are, and how it differs with the traditional file processing system. It then deals with data models, ER diagrams, database design methods, normalization, relational algebra and calculus, file organizations and storage management, index structure for files, and SQL statements.

SWE123: Calculus II
Calculus II is an introduces to integral calculus: the study of change. The course is designed for students working on a degree in Software Engineering and those planning on certain types of graduate work. SWE123 covers transcendental functions, applications of the indefinite integrals and definite integrals. The goal here is developing the student’s geometric insight into the concepts integration, and applying these concepts to problem solving and “real world application”.

SWE124: Introduction to Data Communication and Networking
This course will explore the various types of the data communication systems, networks and their applications. Concept & terminologies like computer networks, layer architecture (OSI & TCP/IP), network hardware, network software, standardization, network medium, and IP addressing will be explored. The practical aspect will deal with building small to medium level networks including Cabling, Configuring TCP/IP, Peer-to-Peer Networking, Sharing resources, Client Server Networking.

SWE125: Academic Writing II
A writing course is designed to reinforce essay composition skills and introduce students to the practice of writing for academic purposes. It will prepare students for work in high level English courses in which research writing is a requirement. The course will place greater emphasis on macro-level composition skills such as: essay structure, paragraph structure, coherence, unity; and micro-level skills such as: sentence structure, grammar, vocabulary, spelling and mechanics.

SWE131: Fundamental of Programming II(java)
This course starts with overviewing methods and discusses the concept of arrays, Strings, exception handling and files in detail. It also discusses about the mechanics of running, testing, and debugging programs and introduces object-oriented programming.
SWE132: Advanced Networking
This course is to familiarize students with basics and Advance Networking. This course is job- oriented course and designed to produce networking professionals capable of implementing, administration, maintaining Networks and overall systems

SWE133: Introduction to Web Development
This course introduces students to basic web design using HTML (Hypertext Markup Language) and CSS (Cascading Style Sheets). The course does not require any prior knowledge of HTML or web design. Throughout the course students are introduced to planning and designing effective web pages; implementing web pages by writing HTML and CSS code; enhancing web pages with the use of page layout techniques, text formatting, graphics, images, and multimedia; and producing a functional, multi-page website.

SWE134: Advanced Database Systems
The course presupposes a basic knowledge of conceptual modeling for data base systems and implementation using relational DBMS and SQL. The course aims to a more profound understanding of database theories, models, and methods and an ability to use data mining and data warehousing, distributed databases and client server architecture.

SWE211: Object Oriented Programming
This programming course emphasizes the methodology of programming from an object-oriented perspective and software engineering principles. It allows students to develop the ability to analyses programming problems and design and document suitable solutions and to implement reliable and robust software using contemporary program design methods. Topics to be dealt with are classes: data abstraction, information hiding, overloading, inheritance, polymorphism, exceptions handling, Static and dynamic binding, Abstract classes, java File I/O and Interfaces.

SWE212: Advanced Software Engineering
This course covers advanced software engineering topics related to dependable systems. Students will be presented with properties of dependable systems such as availability, reliability, security, safety, and resilience. Students will learn about the benefits of these properties and techniques for attaining these properties. Software re-use and distributed systems are also covered.

SWE213: Cyber Security
This course is designed to teach mid-level security practitioners how to engage all functional levels within the enterprise to deliver information system security. To this end, the course addresses arrange of topics, each of which is vital to securing the modern enterprise. These topics include inter alia plans and policies, enterprise roles, security metrics, risk management, standards and regulations, physical security, and business continuity. Each piece of the puzzle must be in place for the enterprise to achieve its security goals; adversaries will invariably find and exploit weak links

SWE214: Advanced Web Development
Client-server Architecture: Web page Design and development; information Architecture & visualization;dynamicpages,OOPprogramming usingPHP,FilemanipulationandManagement using PHP. Multimedia web programming, dynamic web content creation; session tracking; Internet protocols, PHP Web controls, connecting web page to data base, loading and manipulating XML documents, web security; cryptography theory.

SWE221: C-Sharp
C# is a modern, object-oriented programming language intended to create simple yet robust programs. Designed specifically to take advantage of CLI features, C# is the core language of the Microsoft .NET framework. In this course, students gain the skills to exploit the capabilities of C# and of the .NET Framework to develop programs useful for a broad range of desktop and Web applications.

SWE222: Operating Systems
What is an Operating System, history of operating system, operating system zoo, process concept, process scheduling, inter-process communication, threads, CPU scheduling, basic concepts, scheduling criteria, scheduling algorithms and process synchronization. The critical section problem, semaphores, monitors, classical synchronization problems; deadlocks, avoidance, prevention, detection; memory management, physical and virtual memory, swapping, allocation, paging, segmentation; file systems, access methods, directory structure, file sharing and protection; security, authentication, intrusion detection, encryption.

SWE223: Discrete Mathematics
This course introduces the foundations of discrete mathematics as they apply to Software Engineering, focusing on providing a solid theoretical foundation for further work. Topics include
functions, relations, sets, simple proof techniques, Boolean algebra, propositional logic, digital logic, elementary number theory, the fundamentals of counting, predicate logic, recurrence relations, graphs, trees, matrices, computational complexity, elementary computability, and discrete probability.

SWE224: Management Information Systems
Management Information Systems is a formal discipline within business education that bridges the gap between Software Engineering and well-known business disciplines such as finance, marketing, and management. This course is designed to provide students with a basic understanding of how Information Systems are used in organizations for meeting strategic and operational goals. To that end, students will acquire skills using current end-user software for communication, data transformation, collaboration, and problem solving.

SWE231: Data Structure and Algorithms
This course focuses on the study of data structures, algorithms and program efficiency. Topics include: analysis of time and space requirements of algorithms; program efficiency improving techniques, abstract data types such as linked lists, stacks, queues, trees (traversal, implementations); simple searching algorithms (e.g. linear search, binary search, etc.), simple sorting algorithms (e.g. bubble sort, insertion sort, selection sort), advanced sorting algorithms (e.g. merge sort, quick sort, heap sort ).

SWE232: Microsoft System Administration
This course provides students with the knowledge and skills necessary to perform administrative tasks in a Microsoft Windows network. The goal of this course is to provide individuals who are new to Microsoft Windows operating system with the knowledge necessary to understand and identify the tasks involved in supporting Windows networks. This course is designed to provide knowledge of user accounts, groups and group scopes, permissions, security, Active Directory terminology, utilities, and Network Roles and Services.

SWE233: Linear Algebra
This is an undergraduate course in linear algebra for students of Software engineering, science, and mathematics. Linear algebra is the study of linear systems of equations, vector spaces, and linear transformations. Solving systems of linear equations is a basic tool of many mathematical procedures used for solving problems in Software engineering. In this class we will concentrate on the mathematical theory and methods of linear algebra. The student will become competent in solving linear equations, performing matrix algebra, calculating determinants, and finding eigenvalues and eigenvectors. On the theoretical side, the student will come to understand a matrix as linear transformations relative to a basis of a vector space.

This course will cover the practical aspects of multi-tier application development using the .NET framework. The goal of this course is to introduce the students to the basics of distributed application development. We will introduce the students to Web Service development and .NET remoting. Technologies covered include the Common Language Runtime (CLR), .NET framework classes, C#, ASP.NET, and ADO.NET. We will also cover service-oriented architecture, design, performance, security, content management systems and deployment issues encountered in building multi-tier distributed applications.

SWE311: Advanced Java Programming
This course explores advanced Java language features and packages. The course begins with introducing applets. Multithreading, network programming and Database programming using JDBC is covered in depth. Distributed programming in Java is introduced using RMI. Reflection in Java and JAR files are covered. Server-side Web programming is introduced using servlets and JSP. Java security is covered. There is also an introduction to JavaBeans.
SWE312: Formal Language and Theory Automata
This course aims to develop the theoretical foundations of computer science through the study of mathematical and abstract models of computers and the theory of formal languages. It also introduces some fundamental concepts in automata theory and formal languages including grammars, finite automata, regular expressions, formal languages, pushdown automata, and Turing machines. Not only do they form basic models of computation, they are also the foundation of many branches of computer science, e.g. compilers, software engineering, concurrent systems, etc.

SWE313: Statistics
Descriptive statistics, elements of probability theory, and basic ideas of statistical inference. Topics may include frequency distributions, measures of central tendency and dispersion, commonly occurring distributions (binomial, normal, etc.), estimation, and testing of hypotheses.

SWE314: Software Project Management
SWE314 describes the principal tasks of software project managers and basic concepts in software projects, plan software projects, including risk and quality management. Explain basic concepts and principles of components of software engineering and how these components contribute to the software process, evaluate and relatedifferent software processes, system models and architectural designs and assess their suitability in a given context and how the project manager can act to influence success of the project.

SWE315: Advanced Operating Systems (Linux/Unix)
This course deals with the concepts and techniques of systems and network administration. The course mainly covers a wide range like host management, network management, host and network security to automating system administration. In this course students will install, manage and configure various popular network based services in a Linux environment.

SWE321: Compiler Design
The course builds on the student's core knowledge of languages, grammars and programming and provides an opportunity to see how these core areas can come together to form a compiler. Students will learn about basic techniques used in compiler construction, such as lexical analysis, parsing, and code generation.

SWE322: Multimedia System
This course deals with the principles and current technologies of multimedia systems. It incorporates topics such as multimedia standards, tools and systems, current issues and trends of research in Multimedia systems. It is designed to raise student’s understanding of multimedia data and multimedia systems and initiate them for research in the domain

SWE323: Introduction to Entrepreneurship
What to expect on this course. (Online web site with a business, products or solutions), Entrepreneurship historical perspective (from agriculture to commerce) who are the entrepreneur. Example of the current entrepreneurs in the world, from facebook to microsoft), Online e- commerce annual worldwide amount from 2001 to today, understanding product and solutions, Understanding targeting customers with the correct product or solution, Start team work on how to develop a product and solution, Legal research on online tax and incentives in Somaliland. Develop and research payment system ( credit card option to receive international payments), research a domain and keywords target (free domains from dot TK),research web site and Hosting, setup a hosting account and web site ,Search engine optimization, Outsource with freelancer sites or forum.

SWE324: Research Methodology
This course provides participants with an introduction to research methods that enable them build skills necessary for the planning, data gathering and dissemination of research findings. The skills are important to participants in their day-to-day work as they compile reports and generate information for relevant decision-making. The skills acquired along the module are also key to the participants’ progress on the degree program where they are expected to carry out research. Topics covered range from Research Design; Methods of Data Collection; Approaches to Analyzing Data and Writing a Research Proposal. The course provides a foundation for further learning in specific research methods. It is primarily designed for participants on the Degree College of Computing and Information Technology

SWE325: Mobile Web Development
Android application development course, students will learn how set up Android environment and master its architecture, including user interfaces, activities, controls, layouts, services, content providers, and multimedia APIs. that work seamlessly with a range of phones and tablets; students will gain practical development experience by building applications during the android app development course. Android developers are in high demand.

SWE331: Computer Graphics
The aim of this course is to introduce computer graphics and computer vision for students with an interest in imaging or digital visual arts and to the highest extent, create animated objects and video game development. The course primarily introduces both the hardware and software utilized in computer graphics. The emphasis is on creating a working graphics system from the ground up, but modern models and applications are also discussed and utilized. The fundamentals of display hardware and applications, interactive techniques and color models, study of 3D viewing pipeline, drawing images in OpenGL, 3D polygon rendering and transformations are discussed shrewdly

SWE332: Human Computer Interaction Engineering
A key component to the discipline of Software Engineering is the understanding and the advocacy of the user in the development of software applications and systems. Software engineering graduates must develop a mind-set that recognizes the importance of users and organizational contexts. They must employ user-centered methodologies in the development, evaluation, and deployment of Computer applications and systems. This requires graduates to develop knowledge of HCI, including but not limited to such areas as user and task analysis, human factors, ergonomics, accessibility standards, and cognitive psychology.

SWE333: Senior Project