| | 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 OBJECTIVESThe 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 | | |
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 | | |
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 |
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 Level:
Undergraduate
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 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 Level:
Undergraduate
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 Level:
Undergraduate
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 Level:
Undergraduate
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 Level:
Undergraduate
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 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 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 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 Level:
Undergraduate
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 Level:
Undergraduate
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 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 Level:
Undergraduate
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 Level:
Undergraduate
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 Level:
Undergraduate
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 Level:
Undergraduate
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.
Textbook(s):
Lab Manual. Available through WebCT.
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 Level:
Undergraduate
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:
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 Level:
Undergraduate
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 Level:
Undergraduate
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:
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 Level:
Undergraduate
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 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. |
|
Compliance Details javascript:commonShowModalDialog('{SiteUrl}/_layouts/itemexpiration.aspx?ID={ItemId}&List={ListId}', 'center:1;dialogHeight:500px;dialogWidth:500px;resizable:yes;status:no;location:no;menubar:no;help:no', function GotoPageAfterClose(pageid){if(pageid == 'hold') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/hold.aspx?ID={ItemId}&List={ListId}'); return false;} if(pageid == 'audit') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/Reporting.aspx?Category=Auditing&backtype=item&ID={ItemId}&List={ListId}'); return false;} if(pageid == 'config') {STSNavigate(unescape(decodeURI('{SiteUrl}'))+'/_layouts/expirationconfig.aspx?ID={ItemId}&List={ListId}'); return false;}}, null); return false; 0x0 0x1 ContentType 0x01 898 |
|