Skip Ribbon Commands
Skip to main content
Use SHIFT+ENTER to open the menu (new window).
  
  
Edit
  
Body
2 
  

What Is Software Engineering?

 

Software engineering is the discipline of developing and maintaining software systems that behave reliably and efficiently, are affordable to develop and maintain, and satisfy all the requirements that customers have defined for them.

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 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 to 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. Prospective students can expect to see software engineering presented in two contexts:

  • Degree programs in computer science offer one or more software engineering courses as elements of the CS curriculum. Some offer a multi-course concentration in software engineering within CS.
  • A number of institutions offer a software engineering degree program.

Degree programs in computer science and in software engineering have many courses in common. Software engineering students learn more about software reliability and maintenance and focus more on techniques for developing and maintaining software that is correct from its inception.

 

 

 

While CS students are likely to have heard of the importance of such techniques, the engineering knowledge and experience provided in SWE programs goes beyond what CS programs can provide. Such is the importance of this that one of the recommendations of the SWE report is that during their program of study students of SWE should participate in the development of software to be used in earnest by others.

SWE students learn how to assess customer needs and develop usable software that meets those needs. Knowing how to provide genuinely useful and usable software is of paramount importance. In the workplace, the term “software engineer” is a job label. There is no standard definition for this term when used in a job description. Its meaning varies widely among employers. It can be a title equivalent to “computer programmer” or a title for someone who manages a large, complex, and/or safety-critical software project.

The public must be mindful not confuse the discipline of software engineering with the ambiguous use of the term ‘software engineer” as used in employment advertisements and job titles.​

3 
  

Bachelors In Software Engineering Program

 

SWE PROGRAM GOAL

Our goal has been, and continues to be, a high quality degree program in Software Engineering that prepares students for lifelong learning as they undertake professional careers in computing. The program prepares students to work as requirements engineer, software architect, software design engineer, software quality engineer, software developer, software test engineer, or software engineering project manager.

 

SWE PROGRAM MISSION

To bring forth competent Software Engineers with a strong understanding of computer science bodies of knowledge and theories, who can apply sound engineering principles and methods to the cost-effective creation, development, operation, and maintenance of high-quality software and are prepared for lifelong learning.​
4 
  

Bachelors In Software Engineering Program​

SOFTWARE ENGINEERING PROGRAM OBJECTIVES

The graduates of the software engineering program shall be able to:

1) Apply proper theoretical, technical, and practical knowledge of software requirements, analysis, design, implementation, verification and validation, and documentation.

2) Resolve conflicting project objectives considering viable tradeoffs within limitations of cost, time, knowledge, existing systems, and organizations.

3) Develop appropriate design solutions to a given problem using software engineering approaches that integrate ethical, social, legal, and economic concerns

4) Work as an individual with minimum guidance and as a leader/member of a team to develop and deliver quality software artifacts with effective communication skills.

5) Engage in lifelong learning of software engineering theories and technologies

5 
  

SOFTWARE ENGINEERING PROGRAM LEARNING OUTCOMES

The software engineering program enables students, by the time of graduation, to achieve the ability to:

a) Apply their knowledge of mathematics, sciences, and computer science to the modeling, analysis, and measurement of software artifacts.

b) Work effectively as leader/member of a development team to deliver quality software artifacts.

c) Analyze, specify and document software requirements for a software system.

d) Develop alternative design solutions to a given problem and recommend the best one within limitations of cost, time, knowledge, existing systems, and organizations.

e) Implement a given software design using sound development practices.

f) Verify, validate, assess and assure the quality of software artifacts.

g) Design, select and apply the most appropriate software engineering process for a given project, plan for a software project, identify its scope and risks, and estimate its cost and time.

h) Express and understand the importance of negotiation, effective work habits, leadership, and good communication with stakeholders, in written and oral forms, in a typical software development environment.

i) Understand the impact of computing solutions in a global and societal context.

j) Recognize and be guided by the social, professional, legal, ethical issues involved in the use and development of computer & software technology.

k) Keep abreast of current developments in the discipline to continue their own professional development and life-long learning.

l) Employ appropriate methods and tools for the specification, design, implementation, and evaluation of software systems.​

6 
  

Software Engineering Program Prerequisite Chart

 

8 
  
9 
  

PROGRAM REQUIREMENTS

 

A. General Education Requirements (52 Credits)

Category
CR
Courses
Basic Science
12
CHEM 101(4), PHYS 101(4), PHYS 102(4)
Mathematics and Statistics
17
MATH 101(4), MATH 102(4), MATH 201(3), MATH 260(3), STAT 319(3)
English
9
ENGL 101(3), ENGL 102(3), ENGL 214(3)
Physical Education
2
PE 101(1), PE 102(1)
Isl. & Arab. Studies
12
IAS 101(2), IAS 111(2), IAS 201(2), IAS 212(2), IAS 301(2), IAS 322(2)

 

B. Core Requirements (65 Credits)

Category
CR
Courses
SWE required
44
SWE 205 (3), SWE 215 (3), SWE 312 (3), SWE 316 (3), SWE 326(3), SWE 363 (3), SWE 387 (3), SWE 417 (3), SWE 418 (2)
ICS required
4
ICS 102(3), ICS 201(4), ICS 202(4), ICS 233(4), ICS 253(3), ICS 254(3), ICS 324(4), ICS 343(4), ICS 353(3), ICS 431(4)
COE required
4
COE 202(3)

 

C. Electives (15 Credits)

Category
CR
Courses
SWE/ICS Electives
9
3  SWE/ICS XXX(3)
Electives
6
6 credit-hours of approved technical electives

 

D. Summer Training (Pass/Fail Grade; No Credits)

Every student is required to participate in a summer training program of genuine practical experience and submit a formal written report.

 

E. Total Requirements

The total required credits for the BS degree in Computer Science are 132 semester-credit-hours.​
10 
  

DEGREE PLAN

 

First Year (Preparatory)

Course
#
Title
LT
LB
CR
 
Course
#
Title
LT
LB
CR
ENGL
001
Preparatory English I

15

5

8

  ENGL
002
Preparatory English II
15
5
8
MATH
001
Preparatory Math I
3
1
4
  MATH
002
Preparatory Math II
3
1
4
ME
003
Preparatory Engg. Tech.
0
2
1
  PYP
001
Prep Physical Science
2
0
2
PYP
002
Prep Computer Science
0
2
1
  PYP
003
University Study Skill
0
2
1
PE
001
Prep Physical Educ I
0
2
1
  PE
002
Prep Physical Educ II
0
2
1

18
12
15
 
20
10
16

 

Second Year (Freshman)

Course
#
Title
LT
LB
CR
 
Course
#
Title
LT
LB
CR
MATH 101 Calculus I 4 0 4   MATH 102 Calculus II 4 0 4
PHYS 101 General Physics 3 3 4   PHYS 102 General Physics II 3 3 4
ENGL 101 An Introduction to Academic Discourse 3 0 3   ENGL 102 Introduction to Report Writing 3 0 3
CHEM 101 General Chemistry I 3 4 4   ICS 102 Intro. To Computing I 2 3 3
IAS 101 Practical Grammar 2 0 2   IAS 111 Belief & its Effects 2 0 2
PE 101 Physical Education I 0 2 1   PE 101 Physical Education II 0 2 1

15 9 18  
14 8 17

 

Third Year (Sophomore)

Course
#
Title
LT
LB
CR
 
Course
#
Title
LT
LB
CR
SWE 205 Intro. To SW Engineering. 3 0 3   ICS 202 Data Structures 3 3 4
ICS 201 Intro. To Computing II 3 3 4   SWE 215 SW Requirements Eng. 2 3 3
COE 202 Digital Logic Design 3 0 3   ICS 233 Com. Arch. & As. Lang 3 3 4
MATH 201 Calculus III 3 0 3   ICS 254 Discrete Structures II 3 0 3
ICS 253 Discrete Structures I 3 0 3   IAS 201 Writing for Prof. Needs 2 0 2

15 3 16  
13 9 16

 

Fourth Year (Junior)

Course
#
Title
LT
LB
CR
 
Course
#
Title
LT
LB
CR
SWE 312 User Interface Design 3 0 3   SWE 326 SW Testing & QA . 3 0 3
SWE 316 SW Design and Arch. 3 0 3   SWE 363 Web Eng. & Development. 3 0 3
ICS 324 Database Systems 3 3 4   SWE 387 Software Project mgt. 3 0 3
STAT 319 Prob.& Statistics for Engrs 2 3 3   ICS 343 Fund. of Comp. Networks. 3 3 4
IAS 212 Professional Ethics 2 0 2   IAS 322 Human Rights in Islam 2 0 2
              ENGL 214 Academic & Prof Comm 3 0 3

13 6 15  
17 3 18

 

Summer Session

Course
#
Title
LT
LB
CR
ICS

399

Summer Training 0 0 0

 

Fifth Year (Senior)

Course
#
Title
LT
LB
CR
 
Course
#
Title
LT
LB
CR
SWE
417
SWE Project I

1

6

3

  SWE
418
SWE Project II

0

6

2

XE
xxx
(Free Elective I)
3
0
3
  ICS
431
Operating Systems
3
3
4
ICS
353
Design and Anal. of Algo.
3
0
3
  SWE
xxx
(SWE/ICS Elective II)
3
0
3
ISE
307
Eng. Economics Analysis
3
0
3
  SWE
xxx
(SWE/ICS Elective III)
3
0
3
SWE
xxx
(SWE/ICS Elective I)
3
0
3
  IAS
301
Oral Comm. Skills
2
0
2
              XE
xxx
(Free Elective II)
3
0
3

13
6
15
 
14
9
17

 

Total credits required in Degree Program: 132​

11 
  

PROGRAM REQUIREMENTS

 

A. General Education Requirements (52 Credits)

Category
CR
Courses
Basic Science
12
CHEM 101(4), PHYS 101(4), PHYS 102(4)
Mathematics and Statistics
17
MATH 101(4), MATH 102(4), MATH 201(3), MATH 260(3), STAT 319(3)
English
9
ENGL 101(3), ENGL 102(3), ENGL 214(3)
Physical Education
2
PE 101(1), PE 102(1)
Isl. & Arab. Studies
12
IAS 101(2), IAS 111(2), IAS 201(2), IAS 212(2), IAS 301(2), IAS 322(2)

 

B. Core Requirements (55 Credits)

Category
CR
Courses
ICS required
44
ICS 102(3), ICS 201(4), ICS 202(4), ICS 233(4), ICS 253(3), ICS 254(3), ICS 309(2) ICS 324(4), ICS 343(4), ICS 353(3), ICS 381(3),ICS 410(3), ICS 411(3)ICS 431(4)
COE required
4
COE 202(3), COE 203(1)
SWE required
4
SWE 311 (4)

 

C. Electives (24 Credits)

Category
CR
Courses
ICS Electives
12
4  ICS/SWE XXX(3),
Electives
12
12 credit-hours of approved technical electives

 

D. Summer Training (Pass/Fail Grade; No Credits)

Every student is required to participate in a summer training program of genuine practical experience and submit a formal written report.

 

E. Total Requirements

The total required credits for the BS degree in Computer Science are 131 semester-credit-hours.​
12 
  

ICS 399: Summer Training

 
Course Information
Class/Laboratory Schedule: 

(0-0-0)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Software design
  • Using APIs
  • Software tools and environments
  • Software processes
  • Software requirements and specifications
  • Software validation
  • Software evolution
  • Software project management
  • Information models and systems
  • Database systems
  • Data modeling
  • Relational databases
  • Database query languages
  • Relational database design
  • Distributed databases
  • Communication skills
Catalog Description: 

A summer period of 8 weeks spent as a trainee in industry, business, or government agencies for the purpose of familiarizing the student with the real job world and enabling him to apply and relate his academic knowledge to a real work environment.

Eligibility Requirements: Departmental Approval.

Course Outcomes: 

After completion of this course, the student shall be able to:

  • Work with a company or organization with self confidence and exercise his skills safely and in a professional manner.
  • Practice an acceptable level of attendance and credibility to gain and maintain employment in a chosen occupation.
  • Exercise negotiating skills and learn how to seek and provide information and discuss problems in a constructive way.
  • Learn what is required to perform a specific task or series of tasks that meet the requirements of a company or organization.
  • Have a working knowledge of the career he has chosen based on his training experience.
  • Practice the application of theory in real life work
  • Increase business contact.
  • Write reports according to predetermined guidelines and make oral presentations in English to convey in a limited time, the range of experience obtained and outline the most important skills learned.​
13 
  

ENGL 214: Academic & Professional Communication

 
Course Information
Designation: 
 Other
Course Level: 
 Undergraduate
Catalog Description: 

The purpose of Academic & Professional Communication is to enhance students’ reading, writing, oral, and electronic skills to enable them to communicate effectively in English not only during their university careers but also beyond in their professional lives.

This course is offered by the English Language Department. More information about the course can be obtained from their website​

14 
  

ICS 324: Database Systems

 
Course Information
Class/Laboratory Schedule: 

3 lectures per week, 50 minutes each, and one 3 hours lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Fundamental Programming Constructs
  • Algorithms and Problem-Solving
  • Fundamental Data Structures.
Prerequisite Courses: 
Catalog Description: 

Basic database concepts, conceptual data modeling, relational data model, relational theory and languages, database design, SQL, introduction to query processing and optimization, and introduction to concurrency and recovery.

Textbook(s): 

Fundamentals of Database Systems, R. Elmasri and S. B. Navathe, 5th edition, Addison-Wesley, 2006.

Reference(s) and Other Material: 
  • Database System Concepts, by Abraham Silberschatz, Henry F. Korth, S. Sudarshan McGraw Hill, 5th
    Edition, 2006
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Explain the basic database concepts and relational theory.
  • Understand and develop relational / conceptual data model.
  • Use and apply database programming languages and physical database design.
  • Understand the basics of query processing and optimization, concurrency controls and database recovery.
  • Gain work experience in a lab project as a team member or leader.
Topics Covered: 
  • Information models and systems
  • The relational data model
  • Relational languages
  • SQL
  • Conceptual modeling and mapping
  • Functional dependency and normalization
  • Practical and Physical database design Concepts
  • Database processing issues like query processing and optimization, concurrency controls, security, and database recovery​
15 
  

ICS 202: Data Structures

 
Course Information
Class/Laboratory Schedule: 

Class/Laboratory Schedule: Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Algorithms and Problem-Solving
  • Recursion
  • Fundamental Computing Algorithms
  • Virtual Machines
  • Declarations and types
  • Abstraction Mechanisms
  • Object-Oriented Programming Paradigm
  • Using APIs
Catalog Description: 

Review of object-oriented concepts; Introduction to design patterns; Basic algorithms analysis; Fundamental data structures - implementation strategies for stacks, queues and linked lists; Recursion; Implementation strategies for tree and graph algorithms; Hash tables; Applications of data structures (e.g. data compression and memory management).

Textbook(s): 

Data Structures and Algorithms in Java, 2nd Edition, Adam Drozdek, Thomson Learning, 2005

Reference(s) and Other Material: 

Data Structures and Algorithms with Object Oriented Design Patterns in Java, Bruno R. Preiss, John Wiley & Sons, Inc., 2000.

Course Outcomes: 
  • Apply object oriented concepts (inheritance, polymorphism, design patterns, etc.) in software design.
  • Implement various data structures and their algorithms, and apply them in implementing simple applications.
  • Analyze simple algorithms and determine their efficiency using big-O notation.
  • Apply the knowledge of data structures to other application domains like data compression and memory management.
Topics Covered: 
  • Review of Object-Oriented Concepts & Introduction to Design Patterns
  • Introduction to Algorithm Analysis.
  • Linked Lists.
  • Stacks & Queues.
  • Recursion.
  • Binary Trees, Binary Search Trees & Tree Traversal Algorithms.
  • Binary Heaps.
  • AVL Trees, B-Trees, B+-Trees.
  • Graphs, Graph Traversal Algorithms & Graph Implementations.
  • Graph Algorithms (Connectedness, Cycle detection & Topological sort).
  • More Graph Algorithms (Shortest path & Minimum Spanning Trees).
  • Hashing Techniques.
  • Application of Data Structures: Data Compression.
  • Application of Data Structures: Memory Management.​
16 
  

ICS 201: Introduction To Computing II

 
Course Information
Class/Laboratory Schedule: 

Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Fundamental programming constructs.
  • Algorithms and problem-solving.
  • Fundamental data structures.
  • Declarations and types.
  • Object-oriented programming.
Prerequisite Courses: 
Catalog Description: 

Advanced object-oriented programming; inheritance; polymorphism; abstract classes and interfaces, container and collection classes, packages, object-oriented design, software modeling, event-driven programming, recursion, use of stacks, queues and lists from API, searching and sorting.

Textbook(s): 

Absolute Java, 2nd Edition, Walter Savitch, Addison-Wesley, 2006.

Course Outcomes: 
  • Develop solutions for a range of problems using object-oriented programming
  • Apply divide and conquer strategy to searching and sorting problems using iterative and/or recursive solutions.
  • Design and implement simple GUI applications
  • Write simple multi threaded applications.
  • Use API in writing applications.
Topics Covered: 
  • Inheritance and Polymorphism
  • Abstract Classes and Interfaces
  • Nested Classes
  • Java Virtual Machine
  • Algorithms, Problem Solving and Recursion
  • Searching and Sorting
  • Collections
  • Computer Graphics and Event Driven Programming
  • Multithreading​
17 
  

ICS 102: Introduction To Computing I

 
Course Information
Class/Laboratory Schedule: 

Two 50 minutes lectures, One 180 minutes lab per week (2-3- 3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • No programming or computer science experience is required.
  • Good prep-year mathematics should be sufficient to appreciate the software solutions of basic mathematical problems.
Catalog Description: 

Overview of computers and computing. Introduction to a typical object-oriented programming language. Basic data types and operators. Basic object-oriented concepts. Wrapper classes. Console input/output. Logical expressions and control structures. Classes and methods. Arrays and strings.
Co-requisite: MATH: 101 Calculus I or MATH 132: Applied Calculus

Textbook(s): 

Absolute Java, 2nd Edition, Walter Savitch, Addison-Wesley, 2006.

Reference(s) and Other Material: 
  • Eric Jendrock, Jennifer Ball, Debbie Carson, Ian Evans, Scott Fordin, and Kim Haase. The Java™ EE 5 Tutorial. Addison Wesley Professional, 2007.
  • Elliot B. Koffman and Ursula Wolz, Problem Solving with Java, Update, 2/E. Addison-Wesley, 2002.
Course Outcomes: 
  • Write programs using basic data types and strings,
  • Design and implement programming problems using selection,
  • Design and implement programming problems using loops,
  • Use and implement classes as data abstractions in an object-oriented approach,
  • Implement simple exception handling in programs,
  • Develop programs with input/output from text files,
  • Design and implement programming problems involving arrays.
Topics Covered: 
  • Introduction to Computer Systems and Computing.
  • Object-Oriented Programming Basics.
  • User Input Handling and Decisions.
  • Input/Outputs Using Text Files.
  • Objects.
  • String Objects.
  • Class Design.
  • Data Encapsulation in Object-Oriented Programming.
  • Input/Output Arguments in Methods.
  • String Tokenization.
  • Arrays and Multidimensional Arrays.
  • Exception Handling.​
18 
  

MATH 101: Calculus I

 
Course Information
Designation: 
 Other
Course Level: 
 Undergraduate
Catalog Description: 

Limits and continuity of functions of a single variable. Differentiability. Techniques of differentiation. Implicit differentiation. Local extrema, first and second derivative tests for local extrema. Concavity and inflection points. Curve sketching. Applied extrema problems. The Mean Value Theorem and applications.

This course is offered by the Department of Mathematics and Statistics more information can be found on their website.​

19 
  

MATH 132: Applied Calculus

 
Course Information
Designation: 
 Required Course
Course Level: 
 Preparatory Year
Catalog Description: 

The derivative. Rules for differentiation. Derivative of logarithmic, exponential, and trigonometric functions. Differentials. Growth and decay models. Definite and indefinite integrals. Techniques of integration. Integrals involving logarithmic, exponential and trigonometric functions. Integration by tables. Area under a curve and between curves. Functions of several variables. Partial derivatives and their applications to optimization. 
  
This course is offered by the Department of Mathematics and Statistics more information can be found on their website.​

20 
  

Junior Standing

 
Course Information
Designation: 
 Other
Course Level: 
 Undergraduate
Catalog Description: 

According to KFUPM academic regulations a Computer Science or Software Engineering major student is considered as "Junior Standing" if the student has successfully passed and completed between 65 to 100 credit hours in his specialized major. More information about classifications can be obtained from the KFUPM Registrar's Website.​

21 
  

SWE 311: Principles Of Software Engineering

 
Course Information
Class/Laboratory Schedule: 

Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Fundamental programming constructs
  • Fundamental data structures
Prerequisite Courses: 
Catalog Description: 

History and overview of software engineering. Software processes. Software project management. Software requirements and specification. Software design. Software testing and validation. Software metrics. Software quality assurance. Software evolution. Using APIs. Software tools and environments.

Textbook(s): 

Somerville, Ian. Software Engineering, 8th Edition, Addison-Wesley, 2006.

Reference(s) and Other Material: 
  • Pressman, R. S. Software Engineering: A Practitioner's Approach, 6th Ed., McGraw- Hill Companies, Inc., 2005.
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Select an appropriate and effective software process of a given project.
  • Develop clear, concise, and sufficiently formal software requirements specification (SRS) based on the true needs of users and other stakeholders.
  • Apply design principles and architectures in designing software.
  • Create a number of different UML models such as class model, use-cases, sequence diagram, activity diagram, and state charts.
  • Develop a project plan for software development project and apply management techniques and work as a team leader and a member of a team
Topics Covered: 
  • Software design
  • Software tools and environments
  • Software processes
  • Software requirements and specifications
  • Software Validation
  • Software Evolution
  • Software project management
  • Component-based Computing
  • Foundations of human-computer interaction​
22 
  

ICS 233: Computer Architecture & Assembly Language

 
Course Information
Class/Laboratory Schedule: 

Class/Laboratory Schedule: Three 50 minutes lectures, One 180 minutes lab per week (3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Fundamental programming constructs
  • Digital logic and digital systems
  • Machine level representation
Catalog Description: 

Machine organization; Assembly language: addressing, stacks, argument passing, arithmetic operations, decisions, modularization; Input/Output Operations and Interrupts; Memory Hierarchy and Cache memory; Pipeline Design Techniques; Super-scalar architecture; Parallel Architectures.

Textbook(s): 

Computer Organization and Design: The Hardware / Software Interface. Third Edition. David A. Patterson and John L. Hennessy. Morgan Kaufmann, 2004.

MIPS Assembly Language Programming. Robert L. Britton. Pearson Prentice Hall, 2004. (Laboratory textbook)

Course Outcomes: 
  • Analyze, write, and test MIPS assembly language programs.
  • Describe the organization and operation of integer and floating-point arithmetic units.
  • Apply knowledge of mathematics in CPU performance and in speedup computation.
  • Design the datapath and control of a processor.
  • Use simulator tools in the analysis of assembly language programs and in CPU design.
Topics Covered: 
  • Data Representation
  • Instruction Set Architecture
  • MIPS Assembly Language Programming
  • Procedures and the Runtime Stack
  • Integer and Floating-point Arithmetic and ALU design
  • MIPS floating-point coprocessor and instructions
  • CPU Performance
  • Single-Cycle Datapath and Control Design
  • Pipelined Datapath and Control
  • Memory System Design​
23 
  

COE 202: Digital Logic Design

 
Course Information
Designation: 
 Required Course
Course Level: 
 Undergraduate
Catalog Description: 

Introduction to information representation and number systems. Boolean algebra and switching theory. Manipulation and minimization of completely and incompletely specifiedBoolean functions. Physical properties of gates: fan-in, fan-out, propagation delay, timing diagrams and tri-state drivers. Combinational circuits design using multiplexers, decoders, comparators and adders. Sequential circuit analysis and design, basic flip-flops, clocking and timing diagrams. Registers, counters, RAMs, ROMs, PLAs, PLDs, and FPGA's.

This course is offered by our sister Department, the Computer Engineering Department. More information about this course can be obtained from their website.​

24 
  

ICS 253: Discrete Structures I

 
Course Information
Class/Laboratory Schedule: 

Class/Laboratory Schedule: Three 50-minute lectures per week. No lab (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Introduction to Computing.
  • Algorithms and problem solving
Prerequisite Courses: 
Catalog Description: 

Propositional Logic, Propositional Equivalence, Predicates and Quantifiers, Nested Quantifiers, Rules of Inference, Introduction to Proofs; Sets, Set Operations, Functions, Sequences and Summations; Mathematical Induction, Strong Induction, Recursive Definitions and Structural Induction; The Basics of Counting, The Pigeonhole Principle, Permutations and Combinations, Binomial Coefficients, Generalized Permutations and Combinations; Discrete Probability, Probability Theory; Recurrence Relations, Solving Linear Recurrence Relations, Generating Functions, Inclusion-Exclusion; Graphs and graph Models, Graph Terminology and Graph Isomorphism, Connectivity, Euler and Hamilton Paths, Planar Graphs, Graph Coloring; Introduction to Trees, Applications of Trees, Spanning Trees.

Textbook(s): 

Rosen, Kenneth H. Discrete Mathematics and Its Applications, 6th Edition. New Your, McGraw Hill, 2007.

Course Outcomes: 
  • Formulate and derive propositional/predicate logic expressions, and apply proving methods.
  • Apply counting techniques to solve combinatorial problems.
  • Comprehend graphs and trees and their mathematical properties.
Topics Covered: 
  • Functions, relations, and sets
  • Basic logic
  • Proof techniques
  • Basics of counting
  • Graphs and Trees​
25 
  

ICS 254: Discrete Structures II

 
Course Information
Class/Laboratory Schedule: 

Class/Laboratory Schedule: Three 50 minutes lectures per week. No lab (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Functions, Relations and Sets
  • Proof Techniques
  • Counting Techniques
Prerequisite Courses: 
Catalog Description: 

Number Theory: Modular Arithmetic, Integer Representation, Fermat’s Little Theorem. Chinese Remainder Theorem, RSA., Applications from Number Theory; Recursive Definitions; Algorithm Correctness; Relations: Closures and Equivalence Relations, Partial Orderings and Lattices, Hasse Diagrams; Automata Theory: Finite State Machines, Regular Expressions, DFA, NFA and their equivalence, Grammars and Chomsky Hierarchy; Abstract Algebra: Groups, Homomorphism and Lagrange's Theorem, Applications.

Reference(s) and Other Material: 
  • N. L. Biggs, Discrete Mathematics (revised edition), Clarendon Press, 1989.
  • Crisler, N., Fisher, P. and Froelich, Discrete Mathematics through Applications, 2nd Ed., W. H. Freeman Co., 2000.
  • R. P. Grimaldi, Discrete and Combinatorial Mathematics: An Applied Introduction, 4th Ed., Addison Wesley, 1998.
Course Outcomes: 
  • Explain basic concepts in number theory and apply them in problem-solving.
  • Understand relations and their graphical representation
  • Understand foundational knowledge of group theory and automata theory
Topics Covered: 
  • Number Theory
  • Induction & Recursion
  • Relations
  • Group Theory
  • Languages, Grammars and Finite State Machines​
26 
  

ICS 309: Computing And Society

 
Course Information
Class/Laboratory Schedule: 

2 lectures per week, 50 minutes each (2-0-2).

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • No programming or computer science experience is required.
  • Good background in high-school and prep-year English should be sufficient to appreciate the solutions of basic ethical problems.
Prerequisite Courses: 
Catalog Description: 

Impact of Computing on Society; Ethical Foundations; Governance and Regulation; Freedom of Speech; Intellectual Property; Privacy; Security; Professional Responsibility; Leadership challenge.

Textbook(s): 

Ethics in Information Technology by George Reynolds, 2nd Edition, Thomson Course Technology, 2007.

Reference(s) and Other Material: 
  • A Gift of Fire by Sara Baase. 2nd Edition. Pearson Education Inc., 2003.
  • Morality and Machines by Stacy Edgar. 2nd Edition. Jones and Bartlett, 2003.
  • The Leadership Challenge by James Kouzes, and Barry Posner. 3rd Edition. Wiley (Jossey-Bass), 2002.
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Describe and evaluate consequences of computing on individuals, organizations, and society.
  • Critically analyze situations of computer use and technology and policy proposals, identifying the salient issues and evaluating the reasoning about them.
  • Understand philosophical frameworks of ethics.
  • Communicate clearly with others, in writing and in speech, about computing impacts.
  • Describe the characteristics of a good leader.
Topics Covered: 
  • Ethics for IT professionals and IT Users
  • Computer and Internet Crime
  • Privacy
  • Freedom of Expression
  • Intellectual Property
  • Computers and Work
  • Employer Employee Issues
  • Impact of IT on quality of life​
27 
  

ICS 343: Fundamentals Of Computer Networks

 
Course Information
Class/Laboratory Schedule: 

Three 50 minutes lectures, One 180 minutes lab per week(3-3-4)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Algorithms and Problem-Solving
  • Recursion
  • Fundamental Computing Algorithms
  • Multithreading Programming
  • Abstraction Mechanisms
  • Object-Oriented Programming Paradigm
  • Using APIs

Note: This course cannot be taken for credit with COE 344.

Catalog Description: 

This course provides a comprehensive and current introduction to computer networks with focus on the functions performed at each layer of the network architecture and common layer protocol standards.

Note: This course cannot be taken for credit with COE 344.

Reference(s) and Other Material: 
  • Computer Networking: A Top Down Approach Featuring the Internet, 4/e, J. Kurose & Keith Ross, Addison Wesley, 2008.
  • Computer Networks: A Systems Approach, 3/e, Larry L. Peterson, Bruce S. Davie, Morgan Kaufmann Publishers, 2003.
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Identify various network services, characteristics, elements, standards and technologies.
  • Describe the layered architecture of computer networks and the operation of main protocols in the TCP/IP model.
  • Identify, compare and contrast different techniques and design issues of core functions such as addressing, routing, internetworking, switching, multiplexing, error and flow control, medium access and coding.
  • Implement simple client-server applications using socket programming.
  • Effectively use commonly used network-related commands, monitoring tools, traffic analyzers and network simulators.
  • Demonstrate the ability to setup a small network and properly configure network components including switches, routers and services (such as RAS, FTP, DNS, Web, DHCP, POP3).
  • Explain potential threats to network resources and various security mechanisms.
Topics Covered: 
  • Introduction to computer networks and layered architectures, connectivity, topology, circuit and packet switching
  • TCP/IP and ISO models
  • Application layer: C/S model, DNS, SMTP, FTP, WWW,
  • Socket programming and network security;
  • Transport layer: TCP and UDP, congestion control;
  • Network layer: internetworking, addressing and routing algorithms and protocols
  • Data link layer: framing, flow and error control protocols, PPP, MAC and LANs;
  • Physical layer: principles of data communications, circuit switching, coding, multiplexing and transmission media.​
28 
  

ICS 353: Design And Analysis Of Algorithms

 
Course Information
Class/Laboratory Schedule: 

Three 50-minute lectures per week. No lab (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Basic Algorithmic Analysis
  • Fundamental Data Structures and Algorithms
  • Recursion
  • Proof Techniques
  • Basic of Counting
Catalog Description: 

Algorithms and Problem Solving Basic Algorithmic Analysis; Advanced Algorithmic Analysis; Advanced Data Structures Algorithms Strategies & Analysis of Fundamental Computing Algorithms; Basic Computability; The Complexity Classes P and NP.

Textbook(s): 

M. Alsuwaiyel, Algorithms, Design Techniques and Analysis, World Scientific, 1999.

Reference(s) and Other Material: 
  • N/A
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Analyze the complexity of a given algorithm.
  • Apply classical sorting, searching, optimization and graph algorithms.
  • Compare, contrast, and choose appropriate algorithmic design techniques to present an algorithm that solves a given problem.
  • Able to explain NP-Completeness and deal with NP-complete problems.
Topics Covered: 
  • Basic Concepts in Algorithmic Analysis
  • Heaps and Disjoint-Sets Data Structures
  • Solving Recurrence Relations: Expanding the recurrence, Change of Variable, and the Master Theorem.
  • Divide and Conquer: Recursive Algorithms for Sorting, selection, Multiplication of Large Numbers and Matrices, Closest Pair Problem.
  • The Greedy Approach: Fractional Knapsack, Activity Selection, Money Change, Longest Common Subsequence, Matrix-Chain Multiplication, all-Pair Shortest Paths.
  • NP-Complete Problems.​
29 
  

ICS 381: Principles Of Artificial Intelligence

 
Course Information
Class/Laboratory Schedule: 

3 * 50-minute lectures per week. No lab. (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Basic concepts in discrete structures, probability, calculus, and linear algebra.
  • Programming Fundamentals.
Prerequisite Courses: 
Catalog Description: 

Introduction to Artificial Intelligence (AI) history and applications; First order logic; State space representation; Blind and heuristic search; Constraint satisfaction and planning; Knowledge representation; Reasoning in uncertain situations; Machine learning; Prolog programming; Natural language processing, Advanced AI applications.

Textbook(s): 

Artificial Intelligence: A Modern Approach, Stuart Russell and Peter Norvig, Prentice Hall, (Second Edition) 2003.

Reference(s) and Other Material: 
  • Artificial Intelligence: Structures and Strategies for Complex Problem Solving, George F. Luger, Addison Wesley Publisher, (Fifth Edition) 2005.
  • Prolog Programming for Artificial Intelligence, Ivan Bratko, Addison Wesley, (Third Edition) 2001.
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Understand the meaning of AI, its alternative approaches and the implications of AI for cognitive science more broadly.
  • Expand their knowledge about mechanisms, semantic networks, frame systems, heuristic search, genetic algorithm, planning, and symbolic learning algorithms.
  • Understand the basic methods in planning and reasoning using both logic and uncertain inference.
  • Know a variety of ways to represent and retrieve knowledge and information [Expert
    systems, Agents].
  • Know the fundamentals of AI programming techniques and advanced machine learning in a modern programming language.
Topics Covered: 
  • AI history and applications.
  • Intelligent Agents.
  • Problem Solving by Searching.
  • Constraint Satisfaction Problems.
  • Informed Search and Exploration.
  • Adversarial Search
  • First Order Logic.
  • Inference in First Order Logic.
  • Knowledge Representation and Knowledge-Base System.
  • Planning Systems.
  • Reasoning in Uncertain Situations.
  • Machine Learning.
  • Languages and Programming Techniques for AI (Prolog, Lisp).
  • Natural Language Processing.
  • Communicating, Perceiving, and Acting.
  • Advanced Applications of AI.​
30 
  

ICS 410: Programming Languages

 
Course Information
Class/Laboratory Schedule: 

Three 50 minutes lectures per week (3-0-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • Fundamental Programming Constructs
  • Fundamental Data Structures
Prerequisite Courses: 
Catalog Description: 

Programming Paradigms: Object-oriented, imperative, functional, and logic. Application development in these paradigms. Fundamentals of Language Design: Syntax and Semantics. Language implementation: virtual machines; compilation, interpretation, and hybrid.

Textbook(s): 

Concepts of Programming Languages, R. Sebesta, 7th Edition, Addison Wesley, 2006.

Reference(s) and Other Material: 
  • N/A
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Identify various design issues in programming languages and illustrate with examples how the design issues have been handled in various popular programming languages.
  • Understand and use formal tools like BNF/EBNF, attribute grammars, operational semantics, etc. to model syntax and semantics of programming languages.
  • Understand various design tradeoffs like cost and reliability, efficiency and flexibility,etc. needed to develop a programming languages.
  • Show basic program development skill in four programming paradigms: object-oriented,
    imperative, functional, and logic.
Topics Covered: 
  • Basic concepts for programming language design: Quality factors of programming languages like readability, writability, and reliability; factors that affect the design of
    programming languages; design trade-offs
  • Programming language implementation and virtual machines
  • Evolution of the Major Programming languages
  • Describing Syntax and Semantics
  • Introduction to C
  • Object-Oriented Programming
  • Functional Programming
  • Logic Programming
  • Names, Bindings, Type Checking and Scopes
  • Data Types
  • Expressions and the Assignment Statements
  • Statement-Level Control Structure
  • Subprograms
  • Implementing Subprograms
  • Abstract Data Types
  • Concurrency
  • Exception Handling​
31 
  

ICS 411: Senior Project

 

The student will work on an applied project designed to develop his interest in some application of computer technology to a real life problem. Student is expected to submit a written report at the end of the project.

Course Information
Class/Laboratory Schedule: 

One 50 minutes lecture, open lab per week (1-6-3)

Designation: 
 Required Course
Course Level: 
 Undergraduate
Prerequisites
Prerequisite(s) by Topic: 
  • As required by the project
  • Algorithms and problem-solving
  • Data structures
  • Information models and database systems and modeling
  • Software Engineering and the software development life cycle
Catalog Description: 

Project-oriented course in which students work in teams on an applied real-world problem of their interest, go through its software development lifecycle in order to develop a prototype software solution for the problem at hand. The senior project offers the opportunity to integrate the knowledge acquired in preceding courses, as well as promote and instill communication skills, writing skills, and lifelong self-learning.

Reference(s) and Other Material: 
  • Ian Sommerville, Software Engineering, 7th Edition, Addison-Wesley, 2004, ISBN: 0-321-21026-3.
  • Pressman, R. S. Software Engineering: A Practitioner's Approach, 6th Ed., McGraw-Hill Companies, Inc., 2005.
Course Outcomes: 

After completion of this course, the student shall be able to:

  • Formulate a real-world problem and develop its requirements.
  • Develop a design solution for a set of requirements.
  • Test and validate the conformance of the developed prototype against the original requirements of the problem.
  • Work as a responsible member, and possibly a leader, of a team in developing software solutions. Also, participate in, and possibly moderate, discussions that lead to making decisions.
  • Express technical ideas, strategies and methodologies in written form.
  • Express technical and behavioral ideas and thought in oral settings and prepare and conduct oral presentations.
  • Self-learn new tools, algorithms, and/or techniques that contribute to the software solution of the project.
Topics Covered: 
  • Team Formation and Project Management.
  • Risk Assessment and Management.
  • Software Requirements and Specifications.
  • Technical Writing Skills.
  • Software Design.
  • Graphical User Interface Design.
  • Technical Presentation Skills.
  • Software Validation.​
32 
  

Senior Standing

 
Course Information
Designation: 
 Elective Course
Course Level: 
 Undergraduate
Catalog Description: 

According to KFUPM academic regulations a Computer Science or Software Engineering major student is considered as "Senior Standing" if the student has successfully passed and completed 101 credit hours or more in his specialized major. More information about classifications can be obtained from the KFUPM Registrar's Website.​

1 - 30Next