Courses are 4 (quarter) credits unless otherwise indicated in parentheses next to the course title.

ICCS 199 Computer Concepts and Fundamentals
Basic concepts of computer operation and the effects of computers on society; algorithms, their concepts, properties, and role in problem solving process, structured flow chart representation, hierarchy chart and pseudo code; problems are programmed in the structured languages.

ICCS 201 Computer Programming I
Prerequisites: ICMA 211 (for CS major) or ICNS 102 (for CS minor)
Fundamental principles of computer programs, programming languages from various paradigms and programming languages as tools for problem solving, flow of control, input - output.; practical exercises included.

ICCS 203 Computer Programming II
Prerequisite: ICCS 201
A systematic approach to the design and construction of more advanced computer programs; structured programming concepts, program debugging and testing, dynamic data structures; practical exercises included.

ICCS 204 Introduction to Digital Electronics
Prerequisites: ICPY 211
Digital arithmetic, number systems, binary and hexadecimal base codes and logic; Boolean algebra; the Karnaugh map simplification; digital electronic circuits: logic gate, flip flop, combinational circuits, data representation, code conversion, gate minimization; hardware realization and interfacing technique.

ICCS 207 Introduction to File Processing
Prerequisites: ICCS 203, ICCS 321
Records and files, database management systems, data structures, random access and file manipulation, file I/O, characteristics of physical files and storage devices, selection of file organization under various criteria; practical exercises included.

ICCS 208 Computer Logic
Prerequisite: ICCS 204
Number systems; digital logic circuit: Boolean algebra, map simplification, logic gates, combinational circuits; flip-flops: data representation, code conversion, gate minimization, Mealy/Moore machine; practical exercises included.

ICCS 281 Advance Mathematics for Computer Science
Prerequisite: ICMA 212
First order differential equations and their applications, fundamental solutions of the homogeneous second order equation, linear independence, higher order linear equation.

ICCS 306 Numerical Methods I
Prerequisite: ICMA 211
Computational methods, solution of non-linear equations and systems of linear equations, approximated differentiation and integrating, numerical solution of ordinary differential equations, curve fitting.

ICCS 311 Compilers
Prerequisites: ICCS 321, ICCS 325
Preliminary elements of modern compilers; BNF notation, syntax and semantics of formal grammars, scanners and parsers; programming assignments to reinforce theory; a consecutive study of modern compilers; parsers, code generation and code optimization; practical exercises included.

ICCS 312 Human Computer Interaction
This course will cover major themes in HCI, such as the concept of task analysis, the absence of relevant design formalisms, the cognitive basis of proposed interaction taxonomy, the notion of self-explanatory tools, and the use of AI techniques in HCI. The aims of this course are to instill appreciation of the interdisciplinary complexities of both practical and theoretical aspects of HCI and also give students a practical domain that they can recognize the significance and applicability of other module components. Moreover, this course is also giving students an enduring capability to participate in analysis and design work in HCI.

ICCS 315 Operating Systems
Prerequisite: ICCS 321 Definition of functions and components of operating systems; survey of contemporary multiprocessing / multiprogramming systems; exploration of systems programs: their design, internal structure and implementation; CPU scheduling, hierarchical and virtual memory management; advanced topics in operating systems, performance measurement and evaluation and design of operating system modules; practical exercises included.

ICCS 316 Computer Architectures
Prerequisites: ICCS 201, ICCS 204
Stored procedure concept, digital computer architecture, logical control, processor, arithmetic unit, I/O channels, cache and pipelining, machine structures, system interfaces, large computer systems architectures; practical exercises included.

ICCS 321 Data Structures and Algorithm Analysis
Prerequisite: ICCS 201
Basic data structures, storage allocation, design and evaluation of algorithms for manipulating data structures, data structure in programming languages, criteria for selecting data structures to fit their applications; practical exercises included.

ICCS 322 Microcomputer Systems and Interfacing
Prerequisite: ICCS 316
Microcomputer organization; 8-bit, 16-bit and 32-bit microprocessors; microcomputer software, operating systems and application programs; interfacing concepts; microcomputer to mainframe links; practical exercises included.

ICCS 323 Computer Data Communication
Prerequisites: ICCS 199, ICPY 211
Basic communication theory, principal components of data communications and networks, local area networks, network protocols and line control procedures, communication carrier facilities, system planning and network design.

ICCS 324 Discrete Structure
Prerequisite: ICNS 102
Applied modern algebra with specific attention to applications in computer science; topics include logic, set algrebra, equivalence relations and partitions, functions, mathematical induction, elementary number theory, basic combinationrial method, trees and graphs, finite state machines.

ICCS 325 Theory of Computation
Prerequisite: ICCS 324
Turing machine, Post machine, Post’s theorem, Minsky’s theorem; determinism and non-determinism; undecidability, the halting problem; recursive function theory.

ICCS 331 Organization of Programming Languages
Prerequisite: ICCS 321
Language definition structure; programming language processors; data types and structures; control structures and data flow; storage management; syntax and translation; operating and programming environments; programming languages such as FORTRAN, PASCAL, COBOL, C, LISP; comparison.

ICCS 332 Image Processing and Visualization
Prerequisite: ICCS 321
This course introduces a range of state-of-the-art techniques in the fields of imaging and visualization. The ‘information revolution’ has generated large amounts of data, but valuable information is often hidden and hence unusable. Visualization techniques seek to provide graphical answers to questions such as “How does the data look?”, “What structures are there?” or “What model should be used?”. Imaging techniques include the generation of realistic models, such as fractal models of landscapes. The module includes some practical work.

ICCS 333 Introduction to Cognitive Science
Prerequisite: ICCS 324 Some of the fascinating philosophical problems thrown up by cognitive science and related disciplines will be presented. Philosophical problems are notoriously difficult to solve, so a methodology will be presented to enable students to tackle them. Students will be shown the advantages of pluralism, proliferation and pan critical rationalism.

ICCS 365 Information Systems Analysis and Design
Prerequisite: ICCS 201
Information system development strategies, problem identification and feasibility studies, information requirement determination, requirement analysis and logical specification, logical and physical design, system documentation, program development and testing.

ICCS 366 Management Information Systems
Prerequisite: ICCS 365
Design, development, applications, and organizational impact of Management Information Systems (MIS) and Decision Support System (DSS) from the managerial perspective; assessing information needs; sources, organization, characteristics and users of data; database and file management systems; evaluating information systems effectiveness and efficiency.

ICCS 367 Design Patterns
Prerequisite: ICCS 365
This course is an introduction to design patterns covering the rationale and benefits of object-oriented design patterns. Examples will be used to scrutinize the development of good design patterns. This course will discuss in specific patterns, such as Observer, State, Adapter and Abstract Factory. Furthermore, distributed object frameworks, such as RMI and Jini, will be studied for their effective use of design patterns

ICCS 371 Internship in Computer Science 2-cr.
Prerequisite: Juniors
Junior students are required to take an internship in Computer Science with a company under the industry guidance of a staff member for a period of 300 working hours during the summer session in order to extend their classroom knowledge and gain direct practical experience in the computer industry.

ICCS 398 Special Topics in Computer Science I
Prerequisite: Topic dependent
Topic(s) from various areas of computer are chosen according to students’ interest.

ICCS 406 Numerical Methods II
Prerequisite: ICCS 306
Numerical solution of ordinary differential equations; analysis of truncation, discretization and rounding errors; stability; numerical solution of boundary value problems; computation of eigen values and vectors; numerical solution of partial differential equations; practical exercises included.

ICCS 411 Database Management Systems
Prerequisites: ICCS 321, ICCS 365
Basic database concepts, data models, data normalization, data description languages, query facilities, file organization, index organization, file security, data integrity and reliability; practical exercises included.

ICCS 412 Distributed Database Systems>
Prerequisites: ICCS 323, ICCS 411
Distributed database system concepts and architectures; databases and computer networks, principles of distributed database design, the management of distributed transactions, concurrent control, fallibility, distributed database administration; practical exercises included.

ICCS 413 Data Warehousing and Data Mining
Prerequisite: ICCS 411
This course covers Data Warehouse Modeling and implementing Data Warehouses: data extraction, cleansing, transformation and loading, data cube computation, materialized view selection, OLAP query processing. For Data Mining includes fundamentals of data mining process and system architecture, relationship of data mining with data warehouse and OLAP systems, data pre-processing, mining techniques and application: association rules, mining sequence and time-series data, text mining.

ICCS 414 Information Storage and Retrieval
Prerequisites: ICCS 207, ICCS 321
Advanced data structures, file structure databases, key decoding by tree and Rainzd techniques, document retrieval and question and answering systems, algorithms and techniques for automatic classification and storage of documents.

ICCS 415 Computer Graphics
Prerequisite: ICCS 321
Mathematical concepts for graphics, line drawing algorithms, clipping algorithms, polygon filling algorithms, physical and logical input and output devices, graphical standard for software, data structures for graphics; space curves, surfaces in three dimensions, hidden line and hidden surface algorithms, illumination models, rendering techniques, color and ray tracing; practical exercises included.

ICCS 416 Knowledge Management
Prerequisite: ICCS 411
The course deals with issues in concepts and definitions of knowledge and knowledge management, organizational issues and knowledge management, management of intangible assets and intellectual capital. In addition, topics in managing organizational knowledge and knowledge processes are also discussed. Students are expected to learn the complex nature of knowledge in organizations, and have some skills to analyze, understand and implement knowledge management practices in organizations.

ICCS 421 Computer Networks and Distributed Processing
Prerequisite: ICCS 323
Types of computer networks; logical, virtual and transparent facilities; layers of control; physical link control; network management; standard and CCITT recommendations; network mechanisms; HDLC, SDLC; packet switching; X.25; distributed processing and distributed databases; security and privacy; practical exercises included.

ICCS 425 Algorithms
Prerequisite: ICCS 321
Classification of algorithm, data structures, combinatories, sorting, the spanning tree algorithm, traversing graphs and digraphs, string matching, the Knuth-Mouies-Prat algorithm, evaluating polynomial functions, the fast Fourier transform and convolution, dynamic programming; practical exercises included.

ICCS 426 Advance Data Communications
Prerequisite: ICCS 323 LAN concepts, topologies and MAC layer protocols; network sharing techniques; LAN systems; ISO-OSI model; sliding window protocol Distributed Computing; gateways and internetworking; TCP/IP and Internet; network performance analysis for multimedia application; practical exercises included.

ICCS 427 Enterprise Networking
Prerequisite: ICCS 323 Drawing concepts learned in the advanced data communications class, allowing the students to become familiar with how WAN backbones are designed and implemented, along with strategies for integrating existing local Area Networks; security issue is also addressed.

ICCS 428 Object-oriented Concepts
Prerequisites: ICCS 321, ICCS 365
Object-oriented architecture, the basics of object oriented programming, inheritance polymorphism and encapsulation, programming tools, class libraries and application frameworks.

ICCS 429 Microprocessor Concept and Applications
Prerequisite: ICCS 204
The evolution of microprocessor, various microprocessor architecture and functions; the study of typical 8, 16, and 32 bit microprocessors as well as different kinds of commercially available microprocessors and their application; practical exercises included.

ICCS 431 Software Design and Development
Prerequisite: ICCS 365
Planning a software project; software cost estimation; software requirement definition; structured system analysis; software design, implementation, verification, validation techniques, and maintenance; practical exercises included.

ICCS 432 Software Engineering
Prerequisite: ICCS 365
This course covers management of the software development process, including: how projects arise, choosing the right project, software life cycles, human factors in project management, basic project management techniques including planning, estimating, monitoring progress, advanced project management techniques (e.g. risk management, configuration management, quality management, process improvement). Fundamentals of requirements engineering, requirements elicitation and analysis, requirements definition and specification, requirements validation, requirements management, overview of specification techniques.

ICCS 433 Network Analysis
Prerequisite: ICCS 323
Networks ware widely utilized in business today which are maintained on a daily basis by using certain troubleshooting practices; understanding how to solve the network problem with various methods and properly document the network.

ICCS 434 Computer Security
Prerequisites: ICCS 323, ICCS 365, ICCS 411
Security policy implemented to prevent and protect against intruders; understanding the importance and how to implement the security in organizations, various security intrusion and protection mechanism, basic encryption and decryption, OS security, database security, networks security, physical protection, security risk analysis.

ICCS 435 Database System Development and Analysis
Prerequisite: ICCS 411
Utilizing various DBMS and development tools; exploring the mainstream DBMS used today, ie. Oracle, Informix, Power Builder, etc.

ICCS 436 Operating Systems Analysis
Prerequisite: ICCS 315
Utilizing various operating systems; exploring the mainstream operating systems used today, ie. Windows NT, UNIX, Linux, etc.

ICCS 437 Fundamental of Natural Computation
Prerequisite: ICCS 325
Natural computation is the study of systems in nature that lend themselves to a computational interpretation. This module provides an introduction to the field, emphasizing common themes, principles and techniques. It lays the foundations for further advanced study of specific areas (such as neural networks and evolutionary algorithms).

ICCS 438 Introduction to Computer Forensics
Prerequisites: ICCS 315, ICCS 316
This course provides a practical approach to the investigation of incidents in which computers or computer technology play a significant or interesting role. Students are going to be familiar with the core computer science theory and practical skills necessary to perform rudimentary computer forensic investigations, understand the role of technology in investigating computer-based crime, and be prepared to deal with investigative bodies at a rudimentary level

ICCS 439 Evolutionary Computation
Prerequisite: ICCS 321
Study of computational systems that use ideas and get inspiration from natural evolution. Its techniques can be applied to optimization, learning and design. Example topics covered in this module include natural and artificial evolution, evolutionary, chromosome representations, search operators, co-evolution, constraint handling techniques, niching and speciation, genetic programming, classifier systems and theoretical foundations

ICCS 441 Business Application Programming
Prerequisites: ICCS 365, ICCS 411
Focus on how to adapt existing business application to changes in business requirements; introduction to some of the widely recognized business application programming along with the standard industry implementation methodology; application includes but is not limited to ORACLE financial management system, SAP R3, Informix Web tools.

ICCS 442 Decision Support System
Prerequisite: ICCS 411
Discussion of the Decision Analysis Process to provide insights into the entire decision situation, which is much more than obtaining just a numeric answer; focus on how a DSS can be used in the formulation phase, the evaluation phase, the appraisal phase, the interaction between the decision-maker and the decision analyst, and the Deterministic and Probabilistic cycles found within the process.

ICCS 451 Artificial Intelligence
Prerequisite: ICCS 321
Understanding the basic techniques for building intelligent computer systems, LISP and PROLOG programming languages, symbolic computation and problem solving, search strategies, game playing, theorem proving, learning, natural language processing, heuristic programming, expert systems.

ICCS 452 Intelligent Robotics
Prerequisites: ICCS 316, ICCS 321
This course deals with artificial intelligence that is concerned with mechanisms for generating intelligent behavior. When this behavior occurs in the everyday physical world, with its uncertainty and rapid change, we find that all kinds of new problems and opportunities arise. We will try to understand some of these in the context of robotics. In a series of lectures we will look at some theories of how to sense the real world, and act intelligently in it. In a series of labs you will build your own robots to see how well (or badly) these theories actually work.

ICCS 453 Machine Learning
Prerequisite: ICCS 321
This course will provide a good foundation in machine learning. It will compare and contrast human learning with machine learning. It will examine the limitations of machine learning, the role of hypothesis bias and hypothesis representation.

ICCS 454 Natural Language Processing and applications
This course will cover: levels of NLP, speech (phonetics, phonology); grammar (morphology, syntax); meaning (semantics, pragmatics); applications (text-to-speech, speech-to-text, parsing, MT, NL interfaces). The emphasis will be on the background needed to understand practical applications of speech and natural language processing.

ICCS 455 Virtual Reality
Prerequisites: ICCS 315, ICCS 316
This course introduces the concepts of virtual reality, using Virtual Reality Modeling Language (VRML) and enables the students to gain hands-on experience by developing their own applications.

ICCS 473 Technology of Computer Center Management
Prerequisite: ICCS 365
Planning; organizational structure and management control; hardware and software acquisition; computer center processing; standards and procedures; workflow, job scheduling and resource allocation; data communication; performance evaluation.

ICCS 474 Internet Programming
Prerequisites: ICCS 206, ICCS 323
Learning to develop application on the Internet including the WEB based applications; concepts of Internet specific application along with development tools; students must develop simple Internet based application.

ICCS 476 Internet Enterprise Design and Development
Prerequisite: ICCS 365
Discussion of the why, what, and when businesses start the Internet Enterprise, including the tools used to create and channel information, along with techniques of doing this; ways to design and organize content; how to develop an Internet presence, selecting vendors, securing a domain name and its trademark, and selecting an ISP; students will be expected to develop a complete web-site.

ICCS 477 System Simulation
Prerequisites: ICSC 303, ICCS 365
Mathematical modeling of systems, stochastic processes, analytical and discrete-event simulation models, verification and validation procedures, programming techniques, special purpose simulation languages, simulation experiments.

ICCS 478 Pattern Recognition
Prerequisites: ICSC 303, ICCS 321
Artificial Intelligence; statistical decision theory, pattern recognition and image processiong; pattern classification techniques, adaptive classifier; feature selection methods; learning algorithms; the syntactic approach; decision problems; visual and speech recognition machines.

ICCS 479 Electronic Commerce
Prerequisites: ICCS 323, ICCS 365
Learning how e-commerce is being used in today’s business environment; concepts such as the history of credit, the emergence of e-commerce, relationships between e-commerce, banking and the organization, e-commerce and the value chain, and payment systems; a comparison between e-commerce and traditional business practices, organizational support systems, developing a strategy for e-commerce, business on the Internet, data encryption and global difficulties in implementing e-commerce.

ICCS 497 Seminar in Computer Science 2-cr.
Prerequisite: Seniors Each student is required to give presentation on a topic of his/her interest in the area of Computer Science, preferably one related to the student’s senior project, and to prepare a report on the topic.

ICCS 498 Special Topics in Computer Science II
Pre-requisite: Seniors (Topic Independent)
Advanced topic(s) from various areas of computer are chosen according to students’ interest.

ICCS 499 Senior Project in Computer Science
Prerequisite: Seniors
Small research project in Computer Science and related fields under the supervision of an advisor; learning to investigate a research problem and submit a report; required before graduation.