كلية علوم وهندسة الحاسب
Department Requirements - Software Engineering
Core Course


CCCN 310 Digital Logic Design
This course introduces the students to logic operators and logic gates to lay the foundation for understanding of computer architecture, state machines and complex logic operations. Basics of number systems, logic gates, and Boolean algebra will be covered. Then, combinational logic circuits comprising of half and full adders, comparators, multiplexer and de-multiplexer, encoder and decoder will be studied. Also, sequential logic circuits including flip flops, latches will be addressed. Concepts of counters, registers, and memory units will be addressed. At the end, the basic concept of finite state machines will be covered.

CCCN 412 Computer Networks
This course introduces the architecture, structure, functions, components, and models of the Internet and other computer networks. It uses the OSI and TCP layered models to examine the nature and roles of protocols and services at the application, network, data link, and physical layers. The principles and structure of IP addressing, and the fundamentals of Ethernet concepts, media, and operations are introduced to provide a foundation for the curriculum.

CCCS 220 Objected Oriented Programming 1
This course will be taught using the flipped-classroom methodology, i.e., students will be provided with reading and viewing materials ahead of class and will be expected to complete short programming tasks in every class. This course is designed as an entry level programming course for students who have prior programming experience in a structural language. This course introduces the concepts of object-oriented programming paradigm with Java as an illustration language. Students learn how to design and implement classes using different concepts: Encapsulation and information-hiding; separation of behavior and implementation; classes, and inheritance; polymorphism; class hierarchies

CCCS 222 Discrete Mathematics
This course aims to provide a broad introduction to discrete mathematics for computer science and engineering. Discrete mathematics emphasize logical and algebraic relationships between discrete objects. This course cultivates clear thinking and creative problem solving by developing students’ mathematical maturity in several core areas: logic and proofs, sets, functions, relations, algorithms and counting techniques.

CCSW 410 Sofware process models
This course describe about the software process models that simplified the software process from different models. In this course, the student will explore the generic software process that composed of sequence of phases in software development, examine each model that represents a process from a specific perspective comprehensively and discuss generic phases of the software process models.

CCCS 311 Introduction To Database
This course is intended to prepare students to implement a working database system. The course introduces students to the concepts of databases and database modeling design. In the first stage students will build a conceptual data model that is independent of all physical considerations. They will then transform this model in the second stage into relational database logical model. In the third stage, students will translate the logical data model into physical design for the target DBMS. The topics covered by this course are: basic concepts of databases, the concepts of the relational database, conceptual data modelling using ERD, relational algebra, normalization processes.

CCCS 320 Data Structures
This course will be taught using the flipped-classroom methodology, i.e., students will be provided with reading and viewing materials ahead of class and will be expected to complete short programming tasks in every class. This course is designed as an entry level course for students to structural programming. Students will be expected to have had introductory exposure to programming languages and be familiar with at least one scripting / interpreted language.

CCCS 410 Design and Analysis of Algorithms
This course is about the design and analysis of algorithms. The course will present specific algorithms for a variety of problems, as well as powerful modelling techniques (e.g. graphs and linear programming) and design paradigms (e.g. amortized analysis, and dynamic programming.

CCCS 411 Operating Systems
This course aims to provide a broad introduction to modern operating systems for computer science and engineering. The course covers theoretical and practical challenges encountered when designing, implementing, and using operating systems. Topics include operating system structure, CPU scheduling, synchronization of concurrent processes, mutual exclusion, deadlock, main/virtual memory management


CCSW 310 Principles of Software Engineering
The aim of this course is to introduce students to the main concepts of software engineering. This course explores ideas and techniques for designing, developing, and modifying medium to large scale software systems. It covers some techniques of requirement elicitation. It introduces some basic concepts of specification, documentation, verification, and validation including cost, quality metrics and estimation, project team organization and management. By the end of the course, students are expected to know key concepts of software engineering.

CCSW 320 HCI
This course teaches the fundamental of HCI and the substantial guidelines of designing and evaluating a usable and useful computational artifact for a well-defined user group. The course introduces substantial topics in interface and interaction design. These topics include identifying the needs of user group, data gathering, data analysis, data visualization, prototyping and usability evaluation.

CCSW 410 Sofware process models
This course describe about the software process models that simplified the software process from different models. In this course, the student will explore the generic software process that composed of sequence of phases in software development, examine each model that represents a process from a specific perspective comprehensively and discuss generic phases of the software process models.

CCSW 422 Web Development
This course provides an overview of Internet Application development. It introduces the fundamentals of Internet communication and protocols along with the basic knowledge of web programming and design. It introduces the main concepts of client-side and server side programming. This course is the basic step for students to enrich their knowledge and skills in web development and peruse with more advanced topics in this field.

CCSW 423 Software Construction
This course will introduce the students to the practical aspects of writing good code. Building on the material they have learned in previous courses the students will be guided in a laboratory environment to participate in the development of a small software application. Each student will participate in a specific software engineering role and gain practical experience in the various tools and techniques of software construction.

CCSW 510 Senior Poject_I
This course is the first part of a sequence of two courses that constitute the graduation capstone project. In this course, the students integrate the knowledge areas they learnt into a development based project in which they will deliver proposals, reports, and oral presentations. The course topics cover planning, analysis, and design phases of the projects.

CCSW 520 Senior Poject_II
This course is the second part of a sequence of two courses that constitute the BSc graduation capstone project. In this project, the student will continue the System/Research development of the project that started in CCSW 510. The student will deliver oral presentations, progress reports, and a final report.

CCSW 511 Software Testing and Validation
The main focus of this course is on realistic, pragmatic steps for rigorous and organized software testing. It clarifies testing terminology and covers the different types of testing performed at each phase of the software lifecycle together with the issues involved in these types of testing. The course will discuss how tests can be derived from requirements and specifications, design artifacts, or the source code.

CCSW 534 SDP
This course will introduce the students to the principles of software design patterns and will enable them to identify and apply a number of basic design patterns. The course extends the basic notions of object oriented analysis and design and introduces the details of reusability through design patterns. It will cover both design and programing aspect of applying design patterns: an abstraction of a proven solution to a recurring problem in a particular context in a system.

CCCS 310 Objected Oriented Programming 2
This course will be taught using the flipped-classroom methodology, i.e., students will be provided with reading and viewing materials ahead of class and will be expected to complete short programming tasks in every class. This course is an application of object oriented design concepts in order to develop applications of moderate complexity. Students learn to use the unified modeling language (UML) to design applications, communicate their designs, and implement them.

CCCY 325 Software Security
Software security is to allow any intended use of software but prevent any unintended use. Such unintended uses may cause harm. This course focuses on basic software security principles, secure software development from design over implementation to testing, software security policies (with a focus on memory and type unsafe language like C/C++), defense strategies and risk management with a focus on verification, testing, and mitigation, attack vectors, and several case studies.

CCSW 321 Requirements Engineering
This course focuses on the theoretical and practical aspects of the requirements engineering process. Students will be introduced to the fundamental concepts related to requirements. In this course, the students will explore about various requirements types, risks and impact in the requirements process, how requirements evolve, and techniques for eliciting, analyzing, evaluating, managing, and writing requirements.

CCSW 420 Sofware design and architecture
This course describes the design and architecture of complete software systems. Topics include Software design and software engineering, the design process, design principles and concept, effective modular design, architectural principles and alternatives, design documentation, software architectures quality attributes, creating architecture description and architecture, implementation and testing

CCCN 511 CloudComputing
This course will introduce students to the fundamental concepts underlying modern computer organization and architecture. By the end of this course, students shall have a solid understanding of the fundamental architectural techniques used to build today's high-performance processors and systems.  Topics include quantifying cost and performance; instruction set architecture; program behavior and measurement of instruction set use; processor datapaths and control; memory hierarchies and performance; I/O devices, controllers and drivers; I/O and system performance. It shall help engineers who utilize programming in the course of their job; to write high performance computer programs, it is necessary to understand the underlying hardware that those programs will run on. Two-thirds of this course will focus on high performance architectures and memory systems. The final third of the course will focus on multiprocessors. Significant challenges face today's computer hardware industry.

Elective Courses




CCSW 421 Software Project Management
This course describes various aspects of software project management concepts, tools, and techniques: integration management and project planning, performing risk management and configuration management, scope management, scheduling. It focuses on aspects of successful software project from planning through software life-cycle and closure. Description of lab: This lab will provide students with a working knowledge of creating projects using MS Project. It will also give them an idea about how to create project plans, creating tasks and organizing them, setup work resources and assigning them to tasks. Furthermore, this lab gives students an idea of formatting and printing of a project Plan in MS Project also tracking progress of tasks using MS Project.

CCSW 531 Mobile Prog
This course provides an overview of the basic theoretical and practical knowledge about Mobile Technologies. It introduces aspects related to the design and development of mobile applications across different platforms. Students will learn the main concepts of developing mobile applications that meet business needs. The course is considered a good start for students to build their knowledge and skills in this field.

CCSW 533 Advanced PM
This course focuses on advanced and in-depth methods for managing projects and software development projects in particular using limited or finite resources. It covers project planning, scheduling and estimation models, risk management, project organization types, and methods for controlling a project and measuring its performance. The course also examines advanced usage of multiple project management tools such as spreadsheets, Microsoft Project, and Prince2.

CCSW 532 Funds of IoT
The course provides an overview of the IoT concepts, paradigms, initiatives, framework, implications and challenges. A major section includes various IoT enabling technologies that range from hardware items and communication technologies to data processing and storage to emerging standards. This includes hardware components, network technologies, middleware technologies, application services, and business-related technologies. The key-backend technologies are cloud computing and fog computing. Other technologies include foundation technologies, platforms, protocols, technology services, and industrial domains as shown in the list of course topics.

CCSW 535 Formal Methods
The course introduces the mathematical foundation for formal methods used in software engineering. That includes elements of discrete mathematics, formal mechanisms for specifying and verifying the correctness, reliability and efficiency of software systems, finite state machines, regular expression, assertions, algebraic and model-based specification techniques including case studies (prerequisites include knowledge of modern programming languages, data structures, algorithms and discrete structures).

CCSW 536 Advance software Testing
This course describes various aspects of advance topics in testing. It focuses on well known Black-Box and White-Box testing methods. The important aspect of this course is to understand how and when we can apply these methods.

CCSW 537 User Experience
The course introduce the methods and tools used in User Experience (UX) and User Interface (UI) design. UXD focuses on the early design stages of a product’s lifecycle, and aims to ensure the product will meet user needs. The course covered some example tools and methods such as personas, scenarios, storyboards, focus groups, wireframing, prototyping, InVision, Axure, Balsamiq, etc.




آخر تحديث 7/25/2019 10:52:54 AM