قسم هندسة الرمجيات من الأقسام الأساسية في كلية علوم الحاسوب وتقنية المعلومات، ويمنح الطالب درجة البكالوريوس في هندسة البرمجيات بعد اكماله بنجاح 135 ساعة معتمدة، حسب متطلبات القسم العلمي وبمعدل لا يقل عن 2 نقطة من مجموع 4 نقاط، و في فترة ثمان فصول دراسية. ويجوز للطالب التخرج في مدة لا تقل عن 7 فصول اعتيادية أو 6 فصول اعتيادية وفصلين صيفيين، على أن لاتتجاوز عدد 10 فصول دراسية في تخصص هندسة البرمجيات.
1- استنهاض المجتمع من خلال توفير فرص حقيقية للحصول على تعليم عالي ومتميز في تخصص هندسة البرمجيات والذي يحسب ضمن المجالات الأساسية التي ترتكز عليها المجتمعات المتقدمة.
2- تخريج المتخصصين في هندسة البرمجيات وامداد مختلف قطاعات الدولة بالاحتياجات الملحة و الضرورية اللازمة لتسيير الاقتصاد المحلي .
3- المساهمة بتوفير الكفاءات النوعية المتميزة القادرة على إعداد البرامج التطبيقية لهندسة البرمجيات الحديثة وسبل تطويرها و تشغيلها بالطرق المتطورة والتي تتوافق وتطلعات المجتمع وتقليص الارتهان الاجنبي.
4- زرع الثقة في الطلاب من خلال الاندماج في المجتمع بشكل عملي وذلك بإعداد البحوث الحيوية المكملة للمتطلبات الدراسية والمشاركة في الانشطة العلمية.
5- تعزيز مفهوم ثقافة الإدارة الإلكترونية والعمل علي تطبيقها بما يخدم الخطط الاستراتيجية للمجتمع وذلك بإدراج هندسة البرمجيات الحديثة ضمن الانشطة التعليمية و ترسيخ المفاهيم التطبيقية لها.
6- استحداث آلية تبادل المعلومات والافكار من خلال تطبيق فكرة فرق العمل الجماعي والمعتمدة في الجامعات المتقدمة والاستفادة من بناء الشراكات والتعاون مع الأقسام المناظرة من داخل و خارج الجامعة.
7- توفير بيئة الانشطة الأكاديمية والعلمية المحلية منها والدولية وعقد الندوات والمؤتمرات وورش العمل بحيث ترتقي قدرة الابتكار والتفكير بشكل منهجي للطلاب والخريجين.
8- رفع مستوي التفكير الثقافي للمجتمع وذلك بتوفير البيئة التعليمية والتدريبية الداعمة لبناء الملاكات العلمية للطلاب وتعزيز قدراتهم بالمعرفة النظرية والعملية حسب التخصصات المختلفة للكلية.
aهذا المقرر يتناول الحديث على اللغة العربية، ويركز على النحو والبلاغة والصرف في المستوى الأول، ولقد حوى الحديث على الكلمة وأقسامها، ثم المعرب والمبني، وأقسام الفعل، والمرفوعات. ثم ذكر البلاغة، وأنواع الأساليب، والتشبيه وأقسامه. كما أنه تطرق إلى بعض النصوص الأدبية ليتمرن الطالب على قراءتها.
aعدد من الموضوعات تهدف للتعريف بالشريعة الإسلامية السمحة حسب المنهج الوسطي المعتدل البعيد عن التطرف والغلو.
aEnglish for IT 1 is an ESP course that introduces the students to the language encountered while studying in the field of IT. The course includes readings and vocabulary exercises designed to develop the students’ skills in the English language in general and the language of the professions related to IT, in particular. Students develop their writing skills utilizing the sentence and paragraph structure for a coherent writing.
aEnglish for IT 2 is an ESP course that continues to expose the students to the language encountered while studying in the field of IT. The course is a continuation of English for IT1 and includes readings and vocabulary exercises designed to further develop the students’ skills in the English language in general and the language of the professions related to IT, in particular. Grammar, and writing in topics related to IT are also covered.
aThe course contains a range of ideas concerning Functions, domain and range of functions, linear functions, polynomials, expositional functions, logarithmic functions, trigonometric functions (trigonometric identities), hyperbolic functions, inverse of trigonometric functions, inverse of hyperbolic functions and derivatives of functions. It also concerning with matrices and its applications, including operations appropriate in specialized applications and Determinants (some properties)and Inverse of a matrix. The course shows how to formulate algorithms to solve systems of linear equations. It also includes techniques of vector spaces for constructing important mathematical structures, illustrated by examples. Systems of linear equations (Gauss-Jordan elimination, Matrices method, Cramer’s method)
aThe course contains a range of ideas concerning L’Hospital Rule, Taylor series and Maclaurin series. It also concerning Integral of functions in part (1) (using anti-derivatives). Integration techniques (Substitution technique, Integration by Parts, trigonometric substations, completing the square, partial fractions). Multiple integral (double integrals, triple integrals), applications (area, volumes, moments and center of mass).
aThe course contains a range of ideas concerning differential equations (Basic concepts, order, degree), first order differential equations and its applications. The course shows how to (separable equations, homogeneous equations, exact equations, linear equations), Special equations (Bernoulli equation). Second order differential equations (finding a particular solution using variation of parameters). Using separation of variables method. Power series solution (around ordinary points, around regular singular points), Bessel equation, Legendre equation. Systems of first order differential equations (writing system of linear first order differential equations in matrix form, solution using Eigen values and eigenvectors). Laplace transform (some examples), inverse Laplace transform, solution of initial value problems using Laplace transform.
aDefinitions Importance, Scope and Limitations of Statistics – Sources of Data Collection – Classification and Representation of Data Frequency Distribution. Measures of Central Tendency – Measures of Dispersion and Skewness – Ideas about Attributes and Association – Simple Correlation and Simple Regression Permutation and Combinations – Combinatorial problems – Sample Space – Events – Counting of sample points – Classical and Axiomatic definitions of Probability – Marginal and Conditional probability – Baye’s Theorem – Concept of Random Variable Probability Function. Expectation and Variance of Random Variables – Ideas of Bernoulli , Binomial , Poisson and Normal Distributions .
aPopulation, sample and sampling distribution, Point Estimation and Interval Estimation – properties of estimators : Biased and Unbiased Estimators , Consistent , Sufficient and Efficient Estimators – Test of Hypothesis : Null and Alternative hypothesis , Critical Region , Type I and Type ll Errors , Level of Significance , Degree of Freedom , Power of a Test , Test Statistics , One and Two Tailed Tests – Test of Hypothesis Concerning Means , Proportions , Equality of Means and Proportions , variances and Their Interval Estimation – Association of Attributes – Contingency Tables and Test of Independence – Goodness of Fit – Elements of Analysis of variance : One-way and Two-way Classification .
aIn this course students will become acquainted with the forms, functions and rhetorical lives of technical documents. Students will examine and produce a variety of technical documents
aThe course is designed to meet the needs of student majoring in Engineering , IT and Math. It is introductory courses in Newtonian mechanics with topics include: Vectors, motion in one dimension, motion in a plane, Newton’s laws, work and energy, potential energy, momentum, Kinematics of rotational motion, dynamics of rotational motion, elasticity, and fluid mechanics.
aThis course prepares students to conduct research in Computer Science & information technology. The course involves multiple topics including time management, writing and presentation skills, and general considerations for experiment design and planning. It introduces students to concepts, methods, and techniques associated with Computer Sciences research in general. It covers oral and written communication skills. These Skills and knowledge gained from this course will prepare students to conduct and to communicate their own research, as well as to be knowledgeable consumers of others’ research.
Understand the history of how computer technology unfolded, with particular emphasis on the “generations”. Understand how people and events affected the development of computers. Identify the basic components of computer system: input, processing, output and storage. Understand the difference between the difference types of software. Identify the components of the central processing unit and how they work together to form a system and interact with memory. Appreciate the need for the different applications included in the accessories of an Operating System. Know how the commands work in both GUI (Graphical User Interface) and CUI (Character User Interface) environment.
This course is to provide an introduction to basic programming techniques including the following: Problem solving skills. Understand flowcharting tools. Use the proper tool for proper operation. Learn the necessary properties of algorithms: input, output, definiteness, correctness, finiteness, effectiveness, and generality. Understand how to analyze the given problem scientifically and not by intuition. Understand how to write an algorithm to solve a given problem. Convert the algorithm into flowchart and ultimately to a given programming language. Introduction to program design and problem solving using the C programming language.
Review to program design and problem solving using the C programming language. Programming topics include control structures, functions, arrays, pointers, and file I/O. Control Statements Algorithms Pseudo-code, Selection Statement Repetition Statement Formulating Algorithms Compound Assignment Operators, Primitive data Types, Repetition Statement, Multiple-Selection Statement, Logical Operators. Functions Program Modules in C Declaring and using Functions Passing arguments by values and by reference Recursive functions Argument Promotion and Casting Math library functions Scope of Declarations. Arrays Declaring and Creating Arrays Examples Using Arrays Passing Arrays to Methods Multidimensional Arrays. Pointers and Strings Introduction to pointers and pointer arithmetic. Directly and indirectly referencing a variable Pointer operators & and * Pass-by-reference with pointer arguments Introduction to Strings and String manipulations Library string manipulation functions.
To learn and understand basic digital design techniques. Distinguish between a variety of decimal and alphanumeric codes. Acquire sound knowledge in the key principles and practices used in the design and analysis of a digital computer. Analyze related combinational circuits. Discuss the issues involved in hardware or software implementation of an instruction in a digital computer instruction set. Comprehend in-depth knowledge of advanced digital design principles and practice in real-world applications. Make an analysis and synthesis of sequential switching circuits
Introduction. OOP Programming basics. Functions. Classes and Objects. Constructor and Destructor. Inheritance: Derived class. Virtual Function, Files
The course covers network systems (interconnects and switch fabrics, network considerations) and relevant networking applications at the network, transport and application layer.
Understand basics of Logic design techniques. Acquire sound knowledge in the key principles and practices used in the design and analysis of computer logic. Analyze related sequential circuits. Understand the different types of Flip-Flops. Understand the operation and characteristics of Synchronous and Asynchronous counters. Recognize and understand the operation of various types of registers. Distinguish among the various types of memories. Describe the difference between read/write operations. Describe the components of microprocessor.
Introduction to Computer Organization & Architecture: Types of Computers, Processors. Primary and Secondary Memory I/O Devices. Digital Logic Circuits and Components: Digital Logic Circuits, Boolean Algebra K. Map simplifications. Combinational Circuits, Sequential Circuits. Data Representation: Data Types Complements. Fixed, Floating point representation. Binary Codes, Error detection Codes. Central Processing Unit: Register Organization .Stack Organization, Instructions Formats. Addressing, RISC . Overview of Pipeline and Vector Processing. The Instruction Set Architecture Level: Data Types, Instruction Formats Input Output Organization: IO interface, Asynchronous Data Transfer, Modes of Transfer. Memory Organization: Main memory, Auxiliary Memory, Associative Memory, Cache.
Data structures is an essential area of study for computer scientists and for anyone who will ever undertake a serious programming course. Use and implement fundamental data structures including stacks, queues, priority queues, lists, trees and hash tables. Use specified programming tool to develop and implement computer-based solutions to problems. Develop software by using different data structures studied. Learn to implement search and sorting algorithms including the quick sort, the heap sort and hashing. Learn to use recursion to solve problems. Do a Big-Oh analysis for their implementations of basic data structures.
Review of Object-Oriented Programming: Objects, Classes, Functions, Properties and Methods Review of Problem Solving, Algorithm Development, Control Structures, Arithmetic Expressions, Logic, Variables, Constants, and Primitive Data Types Abstract Data Types Data Structures: Sequential and Random-Access Files, Pointers & Lists, Stacks & Queues, Trees & Graphs Manipulating Data Using Methods Decision Making and Repetition with Reusable Objects Sorting and Searching Algorithms Templates & Standard Containers Using Collections and Strings in a Reusable Class Arrays & Vectors, Understanding Abstract Classes and Interfaces Interactive Objects, Scripts, Hyperlinks, & Event Handling Accessing Databases
Introduction to Computer Security and Privacy: The meaning of computer security, Comparing security with privacy . Types of threats and attacks, Methods of defense. Program Security: Secure programs, Non malicious program errors, Malicious code. Controls against program threats. Operating System Security: Methods of protection. Access control, User authentication. Network Security: Network threats, Firewalls. Intrusion detection systems: Internet Application Security and Privacy: Basics of cryptography. Security and Privacy for Internet Applications. Database Security and Privacy: Security and privacy requirements: Reliability, Integrity, Privacy, Inference, Data mining, K-anonymity. Non-technical Aspects: Administration of security systems, Policies, Physical security, Economics of security, Legal and Ethical issues.
In this course students should become familiar with designing database systems for business applications, and should become familiar with commercially available relational database technology. By the end of this course, the student will be able to: Understand the basic concepts, task, methods, and techniques in designing a database. Develop an understanding of the database designing process. Develop the ability to conceptualize the problem at hand. Learn the different Architecture of DBMS. Apply techniques for the design of a database system. Learn some of the appropriate design techniques. Develop the ability to select appropriate DBMS to the solution of the problem at hand.
This course serves the following purposes: To have a thorough knowledge of processes, scheduling concepts, memory management, I/O and file systems in an operating system. To have an overview of different types of operating systems. To know the components of an operating system. To have a thorough knowledge of process management. To have a thorough knowledge of storage management. To know the concepts of I/O and file systems.
This course concern with Computing as a Profession. Philosophical framework and Computer Ethics. Ethical issues in cyberspace. Theory of Justice, and Virtue Ethics); Applied Ethics, Computer Ethics. Personal data privacy in cyberspace. Copyright and intellectual property rights in cyberspace. Methods and Tools for Ethical Analysis
Field training is an integral part of the academic program the IT department, where students are required to work for a certain period in one of the government or private enterprises concerned information services in a government institution or quasi-governmental or private approved by the college plan part. So as to equip them with practical experience in the areas of specialization. Of field training for a full semester (six hours, twice a week throughout the semester). Under the student training period specified in the work site.
The final year projects course after finished 100 h, Students are expected to select topics of their projects and submit a project report on completion of the project. They are expected to do a presentation and perform a working demonstration of their selected project. This module will give students skills and experience in doing either an individual project or a group project
This course aims to introduce the classic algorithms in various domains, and techniques for designing efficient algorithms. Upon successful completion of this course the student is expected to achieve the following goals: Compare algorithms that solve the same problem; Determine inefficiencies in algorithms and how to optimize them. Determine whether a problem has an algorithmic solution. Do the analysis of algorithms, in terms of time and space complexity, for solving a wide variety of common computing problems. Prove the correctness and analyze the running time of the basic algorithms for those classic problems in various domains. Apply the algorithms and design techniques to solve problems. analyze the complexities of various problems in different domains. Do a Big-Oh analysis for their implementations of basic data structures.
This course is designed to give surveys of important concepts related to information systems and how these systems are used throughout global organizations. Topics include data and information differences between them, information quality, the major parts of an Information System (Hardware, Software, Database, Network and People), as well as special topics in information systems including role of Information System for competitive advantage, information system in organizations, administrative information system and its types, internet and world wide technologies and major ethical issues in the digital world. Upon completion, students should be able to understand the implications of how IS provides a competitive advantage, and students will gain an understanding of how information enables improvement in quality and speed in organization.
This course is aimed at helping students build up an understanding of how to develop a software system from scratch by guiding them thru the development process and giving them, the fundamental principles of system development with object oriented technology using UML. The course will initiate students to the different software process models, project management, software requirements engineering process, systems analysis and design as a problem-solving activity, key elements of analysis and design, and the place of the analysis and design phases within the system development life cycle.
Techniques for eliciting requirements. Languages and models for representing requirements. Analysis and validation techniques, including need, goal and use-case analysis. Requirements in the context of system engineering. Specifying and measuring external qualities: performance, reliability, availability, safety, security, etc. Specifying and analyzing requirements for various types of systems: embedded systems, consumer systems, web-based systems, business systems, and systems for scientists and other engineers. Resolving feature interactions. Requirements documentation standards. Traceability. Human factors. Requirements in the context agile processes. Requirements management: Handling requirements changes.
The study of human-computer interaction enables system architects to design useful, efficient, and enjoyable computer interfaces. This course teaches the theory, design procedure, and programming practices behind effective human interaction with computers, and – a particular focus this quarter: smart phones and tablets. We will examine interaction design, implementation, and evaluation. The design process requires a solid understanding of the theory behind successful human-computer interaction, as well as an awareness of established procedures for good user interface design, including the ‘usability engineering’ process. Iterative evaluation is an important aspect of this procedure, and we will learn and practice prototyping and evaluation using scenario-based case studies. We will look at specific interface success stories and spectacular failures to learn from past experiences. Students will apply their gained knowledge in a series of practical assignments using the Android ecosystem that highlight selected portions of the design cycle, as well as familiarize them with sound programming practices and effective tools and techniques to create successful user interfaces. The course will also touch upon novel interfaces that go beyond what we normally see in today’s graphical user interfaces
This course covers the fundamentals of formal methods for systems utilized in Software Engineering and Information Security. It will examine techniques for modeling and formally analyzing computing systems and will consider applications in software, hardware, and security. Students will learn the fundamentals of classical logic, induction and recursion, program semantics, rewriting, reactive systems, temporal logic, model checking, and abstraction. We will examine how these methods can be used to build reliable software, hardware, and security protocols. Students will learn how to use various tools, including theorem proving and model checking tools, and will work in groups to apply the tools to various domains.
This course covers fundamental aspects of software maintenance and evolution, including concepts and techniques, process models for system evolution, and software maintenance case studies. The course focuses on the research issues of software evolution and maintenance. Topics such as reverse engineering, design recovery, program analysis, program transformation, refactoring, traceability, and program understanding will be investigated.
The main purpose of course is to develop thorough understanding of students towards software design. This course focuses on techniques for software design in the development of large and complex software systems. Topics will include software architecture, modeling (including UML), object-oriented design patterns, and processes for carrying out analysis and design. More advanced or recent developments may be included at the instructor’s discretion. The course will balance an emphasis on design principles with an understanding of how to apply techniques and methods to create successful software systems. This course Introduces principles and practices of software development. Includes instruction in critical thinking, problem solving skills, and essential programming logic in structured and object- oriented design using contemporary tools.
This course is a study of software testing and maintenance methodologies for object-oriented, component-based, concurrent, distributed, and web software. Topics include approaches to automatic test case generation, test oracles, coverage analysis, prioritized testing, construction of tools, regression testing and impact analysis. A primary focus will be program-based software testing and maintenance approaches.
Describe and determine the purpose and importance of project management from the perspectives of planning, tracking and completion of project. Compare and differentiate organization structures and project structures. Implement a project to manage project schedule, expenses and resources with the application of suitable project management tools. A broad and critical understanding of the processes for developing high quality software systems. The principles, concepts and techniques associated with software development. An ability to analyze and evaluate problems and draw on the theoretical and technical knowledge to develop and implement plans for their resolution. An awareness of current research in the management of software projects, the analytical skills and research techniques for their critical and independent evaluation and their application to new problems
Introduction to Software Design paradigms, Project Management, System and Software Requirements, Computer Aided Software Engineering, and Software Design Fundamentals using existing documentation for a proposed system. In-depth survey of data flow-oriented, object-oriented, data oriented, and real-time design. Team project involving the implementation of the proposed system using structured programming, information hiding, and strength and coupling measures. Software reviews. Software testing techniques and strategies. Software maintenance. Each student will be required to make an oral presentation as part of the team project.
Component based development is the development of components that individually perform one discrete or unique function. These components can be reused and combined to form other components that perform another discrete or unique function. The main objective of component based development is to reduce time and costs related to the development of reusable learning components. Component based Development has already been introduced as a software development approach which is used to reduce software development costs and to decrease the development time to develop software applications..
The course introduces the students to the modern methods for quality assurance in software development. The content of the course consists of lectures about relevant standards (e.g. ISO/IEC 9126, ISO/IEC 9000, ISO/IEC 25000) for quality assurance and standards for measurement of quality (e.g. ISO/IEC 15939). The course prepares the students to work as quality engineers and quality managers in software development organizations with the focus on embedded software and web applications.
Fourth: Compulsory Department Requirements (42 Cr. H.)Students are required to select three courses (9 Cr. H.) from the Software Engineering Department or from the available elective courses from the other departments.
This course is an introduction to which is the application of economics and decision theory to the methods used for determining the comparative financial desirability of engineering alternatives. Provides the student with the basic tools required to analyze engineering alternatives in terms of their worth and cost, an essential element of engineering practice. The student is introduced to the concept of the time value of money and the methodology of basic engineering economy techniques. The course will address some aspects of sustainability and will provide the student with the background to derive and use the different engineering economy factors.
This course addresses the history of the growth of software importance, the risk profiles inherent in large software systems, the importance of process in large software systems, approaches to the definition, management and execution of large scale developments, and new ways to think about complexity and size. As software has become more pervasive and is responsible for the large majority of functionality in most systems of interest, it is important to understand the differences between engineering a large software system and the traditional view of software engineering as design and coding.
This course introduces basic concepts and principles about software design and software architecture. It starts with discussion on design issues, followed by coverage on design patterns. It then gives an overview of architectural structures and styles. Practical approaches and methods for creating and analyzing software architecture are presented. The emphasis is on the interaction between quality attributes and software architecture. Students will also gain experience with examples in design pattern application and case studies in software architecture.
This Course introduces software engineering concepts to obtain a new perspective on the work done in agent oriented methodologies. Software engineers continually strive to develop tools and techniques to manage the complexity that is inherent in software systems. In this article, we argue that intelligent agents and multi-agent systems are just such tools. We begin by reviewing what is meant by the term “agent”, and contrast agents with objects. We then go on to examine a number of prototype techniques proposed for engineering agent systems, including methodologies for agent-oriented analysis and design, formal specification and verification methods for agent systems, and techniques for implementing agent specifications.
Specialized study within an area of Information Systems, guided by a supervisor. Topics include theoretical and applied aspects of Software Engineering. Combines guided reading and research with a significant individual or group project component.