This course aims to introduce students to software process improvement.
Process improvement aims to learn from current practice and objectively
assess potential improvements. This will be explored by practicing a
simplified form of the Personal Software Process and studying a number
of process related topics drawn from: the goal question metric paradigm;
appropriate automation; configuration management; project tracking and
control; quality assurance; cost of quality; continuous integration;
DevOps; software distribution; Infrastructure, Platform and Software as
a Service; leveraging social media and the internet.
This course enables students to understand concepts and application of
research. It attempts to define what research is, why they do research,
and the various methods that researchers use to investigate problems. It
is designed as an under-graduate introduction to research methodology
in software engineering and information systems. The course provides a
framework for conceptualizing research and is meant to underpin the
research project for the final year. Special focus will be made in Design
Science Research.
The course covers topics such as IS plans and projects; practical
examination of how software projects can be managed from start to
finish; stages of project planning and project life-cycle; project selection
from an organizational perspective, project initiation and scope
development; team building and leadership; project costing, scheduling,
and identifying and managing risks; product quality assurance
techniques, project resource identification and allocation; project
contracts management; progress and performance measurement and
evaluation, project audit and closure; automated project management
tools; ethical issues in software project management.
This course provides an introduction to software quality assurance
concepts and testing. Quality assurance is viewed as an activity that runs
through the entire development process: understanding the needs of
clients and users; analyzing and documenting requirements; verifying
and validating solutions through testing. Major topics are: Why do we
do software testing? The meaning of black-box testing and white-box
testing; Software Testing throughout the Software Process; Software
Testing and Extreme Programming; The Automation of Software
Testing; Difficulties and Limitations of Software Testing; The Business
of Software Testing; Implementing and Automated Testing. Reasons for
SQA failures and factors critical to success of SQA in IS development.
The course covers the following Description: Enterprise-level
information systems, technologies, and infrastructures; enterprise
architecture and service management framework; business architecture
(strategies, processes and governance), information architecture,
applications architecture and technology architecture; enterprise
information system design strategies, models and tools; evaluation of
vendor strategies; legacy system migration issues, performance,
interoperability, scalability, and security concerns; managing web-based
client/server and distributed environments; web services foundations,
vendor architectures, distributed applications; the context for integration,
service-oriented application integration, multi-enterprise portals, mobile
devices, business process integration; web design technologies, web
services APIs, and emerging standards; implementation of enterprise
resource planning package.
This course introduces students to programming technologies, design
and development related to mobile applications. Topics include
accessing device capabilities, industry standards, operating systems, and
programming for mobile applications using the programming language
discussed in class.
The objective of this course is to discuss how the Web systems are
programmed and maintained and how online pages are created and
delivered by Web servers and used by clients. Topics to be covered
include: Web systems and technologies, information architecture, digital
media, Web development, Web standards, vulnerabilities, social
network software, client-side programming, server-side programming,
Web services and servers, XHTML, CSS, CSS, Web systems security,
JavaScript, PHP, and emerging technologies
This course examines basic issues in operating system design and
implementation. It covers the tradeoffs that can be made between
performance and functionality during the design and implementation of an
operating system. Particular emphasis will be given to the major OS
subsystems: process management (processes, threads, CPU scheduling),
Memory management, file and I/O device management and deadlock),
memory management (segmentation, paging, swapping) and file systems.
This course is designed to introduce students to the architecture and
design of complete software systems, building on components and
patterns. Topics to be covered include: Basic principles of Software
Design, Moving from problem to solution, from what to how, from
analysis to design, Problem Domain Modeling, Structure and Behavior
Modeling, Class and Object Design, Software Architectures and Styles,
Gang of four Design Patterns, GRASPRT Principles, Architecture and
Design Refinement.
The aim of this course is to introduce students to the fundamental concepts of business process modeling, a systematic approach to model flow of work within organizations in order to support detailed analysis of business processes. The course covers definition of business processes, principles of process modeling, workflow design, analysis of business process models, overview of existing modeling languages (UML, YAWL, BPEL/BPMN), and business process integration. process representation; interpreting and creating process diagrams; and process validation and change management.
This course aims to introduce students some basic data structures and
algorithms which are to be used as tools in designing solutions to problems.
It will make students familiar with the specification, usage, implementation
and analysis of these data structures and algorithms, Introduction of Data
Structures (Linear, non-Linear Data Structures) mainly focused and
Algorithm Analysis Concept, Measuring Complexity, Complexity of;
Algorithm Big-O Notation. Simple Sorting and Searching Algorithms
(Bubble Sort, Insertion Sort, Selection Sort, Sequential Searching, Binary
Searching; Abstract Data Types, Structures, Pointers, Arrays, Linked Lists,
Stacks, Queues, Trees, Graphs. Advanced Sorting and Searching Algorithms
(Shell Sort, Quick Sort, heap Sort, Merge Sort, and Hashing); Laboratory
exercises are dedicated to practice the basics on concepts on data structures
like Abstract Data Types, Structures, Pointers, Arrays, Linked Lists.
This course makes revision of software design and architecture and
practical agile approaches to usable application software development,
it then continues to familiarize students to DevOps and related
workflows, Software design patterns, Software development workflow,
tools and components, General setup and structure of software projects,
Software versioning (version control), Software development and
testing, Behavior driven development (BDD); User stories and
scenarios, Writing / Generating tests from scenarios, Developing
features (models, views, controllers) with Test-driven Development
techniques; Software version control with Git.
This course focuses on using a systematic approach to eliciting,
analyzing, validating, documenting and managing requirements. It
investigates the requirements engineering approach and the adoption of relevant techniques at each stage.
The course starts with an overview of software requirements basics including definitions of terminology, describing software requirements, standards and an introduction to the requirements engineering process. UML tools and techniques are also covered.
Theoretical concepts are introduced and are then reinforced through practical exercises and a running case study where students can apply techniques of analysis in a realistic project. The course aims to develop the necessary skills needed to work with requirements stakeholders and actors to make sure that requirements are complete, unambiguous, realistic and testable.
Teacher: Kidus Menfese
The course provides an introduction to information assurance. It covers fundamental concepts necessary to understand the threat to security as well as various defenses against those threats.
IT also examines fundamentals of network security involved in creating and managing secure computer network environments. Both hardware and software topics are considered, including authentication methods, remote access, network security architectures and devices, cryptography, forensics and disaster recovery plans.
Instructors of this course: Anteneh Kassaye and Fasika Tegegn
The course is designed to introduce students on how to develop business
applications using object-oriented design methodology with Java as an
illustration programming language. It includes Object Oriented Programming
paradigm and its use; classes,
Objects, Abstraction and Encapsulation; Inheritance, Polymorphism, Creating
Graphical User interfaces (GUIs), Data Structures, Exceptions (Try, catch, and
throw, finally how exceptions affect the design of an application)
This course covers the fundamental concepts and methodologies of software
engineering. It emphasizes the main phases of the software lifecycle, such as
requirements, design, implementation, testing, project planning. Also, it
stresses the difference between the software product and process. It
introduces concepts such as software processes and agile methods, and
essential software development activities, from initial specification through
to system maintenance. Formalisms and tools to assist in software
development are also presented, including common design patterns and UML
notation. There is a focus on software testing, from unit testing to the testing
of software releases. Case studies provide practical examples for many of
these concepts.
In this course the student will gain a broad understanding of modern computer programming. The student will acquire introductory skills in problem analysis, solution design, and program construction. Through practical programming activities, the student will gain an appreciation of the nature and history of computer programming. Introduction to computer programming. The main contents of the course are - Generations of computer language; Interpreted and compiled languages; Program design and development process; Problem definition; Pseudo-code; Flowcharting; Code modularization; Coding, testing, and debugging; Sequence, selection, and iteration patterns; Array processing; File operating, file input / output.
This course provides a general introduction to computers, applications software, programming, hardware and computer information system. Emphasis will be placed on modern computer system; procedural and assembly languages typically used for low-level programming of computer system. Representation of data on computers. Comparisons of different types of instruction sets and corresponding addressing modes; relationships among instruction sets, fetch and execute operation, and the underlying architecture. Consideration of the physical implementation of large memory systems, together with the techniques of data storage and checking. Overall concepts of virtual memory, operating system functions, file systems and networks. Virtual machines and the levels of machine organization, the assembly and linking process and software libraries.