Skip to content
IARSACInternational University

Bachelor of Science in Computer Science

UNDERGRADUATE

The bachelor degree program in Computer Science provides a solid base of fundamental knowledge in the following areas: algorithms, data structures, software design and analysis, programming languages, computer organization and architecture, and theoretical computer science. In addition, students are expected to develop outstanding programming skills. The program provides the necessary foundation for students seeking careers in the computing profession or preparing for graduate study.

For students majoring in other disciplines, the IARSAC International University offers a minor and an applied minor in computer science. The applied minor complements studies in the other colleges and provides a thorough introduction to the use of computers as tools.

COURSE CONTENTS:

Fall Semester

COUURSE CODE TITLE HOURS

Course codeTitleHours
CSC 110Introduction to Programming in Computer3
CSC 112Introduction to Programming in Java3
CSC 113Introduction to Computer Science3
CSC 115Introduction to Software Design3
MATH 104Numerical Methods3
CSC 121Introduction to BASIC Programming3
CSC 117Introduction to the Internet3

Spring Semester

Course codeTitleHours
CSC 120Introduction to Problem Solving In Computer Science3
CSC 123Introduction to Computer Organization I3
CSC 124Introduction to Object-Oriented Development3
CSC 125Introduction to Data Structures and Software Engineering3
CSC 127Introduction to Living in the Knowledge Society3
SCS 128Introduction to Object-oriented Programming3
CSC 129Principles of Programming Languages.3
Course codeTitleHours
CSC 201Introduction to Computer Organization II3
CSC 211Introduction to Operating Systems.3
CSC 213Introduction to Database Management Systems.3
CSC 214Introduction to Software Engineering3
CSC 215Introduction to Data Structures.3
CSC 217Introduction to Computer Architecture and

Machine-Level Programming 3

Course codeTitleHours
CSC 216Computer Programming in COBOL.3
CSC 217Fundamentals of Computer Programming.3
Course codeTitleHours
CSC 220Introduction to Formal Languages and Automata Theory3
CSC 221Introduction to Human-Computer Interaction3
CSC 223Intro Gui Programming/Graphics3
CSC 225Introduction to Media Computation3
CSC 226Introduction to Computational Biology and Bioinformatics3
CSC 228Principles of Computer Architecture and Operating Systems3
CSC 229Computer Architecture3
Course codeTitleHours
CSC 301Intermediate Computer Programming3
CSC 311Software Development Practices3
CSC 312Design and Analysis of Algorithms3
CSC 314Discrete Computational Structures3
CSC 315Languages and Machines3
CSC 316Database System Concepts3
CSC 317Internet Programming3
Course codeTitleHours
CSC 320Algorithms and Advanced Data Structures3
CSC 321Linux Operating System Essentials3
CSC 324Software Construction and User Interfaces3
CSC 325Projects in Computing and Business Applications3
CSC 326Software Requirements Engineering3
CSC 327Formal Aspects of Specification and Verification3
CSC 329Software Testing3
Course codeTitleHours
CSC 400Introduction to Computational Geometry3
CSC 411Introduction to Artificial Intelligence3
CSC 412Hardware, Software, and Troubleshooting Personal Computers3
CSC 429Numerical Analysis I3
CSC 413Web-Based Resources in Educational Settings3
CSC 416Networking and Telecommunications in Educational Settings3
CSC 417Compiler Construction3
CSC 418Computer Graphics3
Course codeTitleHours
CSC 421Computer Speech, Music and Images3
CSC 423Computer Networks3
CSC 426Wireless Networks3
CSC 442Computing for Bioinformatics3
CSC 428Advanced Programming Techniques3
CSC 499Research Project3

COURSE DESCRIPTION

CSC 110: Introduction To Programming In Computer:-

Fundamental concepts underlying software solutions of many problems. Structured data, statement sequencing, logic control, input/output, and functions. The course will be taught using a structured approach to programming.

CSC 112: Introduction To Programming In Java:-

This course provides an introduction to object oriented programming using the Java language. Fundamental concepts underlying programming and software solutions to many problems. Structured data, statement sequencing, logic control, classes, objects, methods, instantiation of classes, sending messages to objects.

CSC 113: Introduction To Computer Science:-

This course (a) presents the fundamental concepts of computer programming, (b) introduces the history of computing, (c) provides an introduction to and preliminary investigation of the fundamental concepts found throughout the computer science discipline, and (d) overviews computer science subdisciplines such as algorithms, artificial intelligence, computer architecture, human computer interaction, language translation, operating systems, parallel computation, and software engineering.

CSC 115: Introduction To Software Design:-

Fundamental concepts of programming from an object-oriented perspective. Basic software engineering principles and programming skills in a programming language that supports the object-oriented paradigm. Simple data types, control structures, array and string data structures, basic algorithms, testing and debugging. A basic model of the computer as an abstract machine. Modeling and problem-solving skills applicable to programming at this level.

MATH 104:

Numerical Methods:- Computational methods for numerical solution of non-linear equations, differential equations, approximations, iterations, methods of least squares, and other topics

CSC 121: Introduction to BASIC Programming:-

Problem solving with computers, analysis of computational problems and development of algorithms for their solution. Algorithms will be implemented in the BASIC language utilizing personal computers.

CSC 117:Introduction To The Internet:-

Introduces the concepts, software, data organization and issues involved with using networked information. Also covers file formats (as applied in networked hypermedia and multimedia sound/video documents), local and global (Internet) network access, electronic mail, transferring files, network news, the World Wide Web, digital libraries, on-line public access catalogs and electronic journals, CD-ROMs and on-line databases, and commercial and other networks.

CSC 120: Introduction To Problem Solving In Computer Science:-

This course introduces the student to a broad range of heuristics for solving problems in a range of settings that are relevant to computation. Emphasis on problem-solving techniques that aid programmers and computer scientists. Heuristics for solving problems "in the small" (classical math and word problems), generating potential solutions to "real-life" problems encountered in the profession, problem solving through computation, and problem solving in teams.

CSC 123: Introduction To Computer Organization I:-

Basic computer organization at the machine language and assembly language level. Digital logic and circuits. Basic components of computer hardware and their implementation. Interaction with the operating system. Alternative computer organizations and implementations.

CSC 124: Introduction To Object-Oriented Development:-

Fundamental concepts of programming from an object-oriented perspective. Basic software engineering principles and programming skills taught with a programming language that supports the object-oriented paradigm. 1705: Simple data types, control structures, array and string data structures and algorithms, testing and debugging. 1706: Detailed coverage of data structures, algorithms, and the methods of object-oriented design and software construction. Design and construction of medium-sized object-oriented programming projects with an emphasis on teamwork and software engineering.

CSC 125: Introduction To Data Structures And Software Engineering:-

Introduces a disciplined approach to problem-solving and emphasizes the utility of software engineering principles applied to programming practices. Also stressed are program design and implementation involving multiple modules, verification of program correctness, and abstract data types and objects such as strings, arrays, sets, linked lists, stacks, queues, and files.

CSC 127: Introduction To Living In The Knowledge Society:-

Introduces computing concepts needed by students to live in the emerging Knowledge Society. Prepares students to take courses in the Curriculum for Liberal education that are part of the pathway with theme Living In the KnowlEdge Society (LIKES) - i.e., the LIKES themed core. Surveys key paradigms of computing, including problem solving, programming, modeling and simulation, and software engineering. Relates these to the Knowledge Society, covering data, information, and knowledge, considering hypermedia, human-computer interaction, presentation, visualization, networking, and communication. Students are prepared to understand the (potential) application of computing to society in general and in their disciplines.

SCS 128: Introduction to Object-oriented Programming:-

An introduction to object-oriented design and programming techniques. Symbolic and numerical computation. Recursion and iteration. Modularity procedural and data abstraction, specifications and subtyping. Object-oriented techniques. Imperative programming. Emphasis on principles of programming and object-oriented design through extensive practice in design, writing, running, debugging, and reasoning about programs.

CSC 129: Principles of Programming Languages:-

Organization of programming languages emphasizing language design concepts and semantics. Study of language features and major programming paradigms, especially functional programming. Programming projects.

CSC 201: Introduction To Computer Organization II:-

An introduction to the design and operation of digital computers. Works up from the logic gate level to combinational and sequential circuits, information representation, computer arithmetic, arithmetic/logic units, control unit design, basic computer organization, relationships between high level programming languages and instruction set architectures.

CSC 211: Introduction to Operating Systems:-

Survey of operating system issues. Introduction to hardware and software components including: processors, peripherals, interrupts, management of processes, threads and memory, deadlocks, file systems, protection, virtual machines and system organization, and introduction to distributed operating systems. Programming projects.

CSC 213: Introduction to Database Management Systems:-

Relational, object-oriented, and semi structured data models and query languages. SQL, ODMG, and XML standards. Database design using entity-relationship model, data dependencies and object definition language. Application development in SQL-like languages and general purpose host languages with application program interfaces. Information integration using data warehouses, mediators and wrappers. Programming Projects.

CSC 214: Introduction to Software Engineering:-

Principles, techniques and tools used to effect the orderly production of medium and large scale computer programs will be studied. These techniques will be applied to programming projects with students working in teams and managing all phases of a programming project.

CSC 215: Introduction to Data Structures:-

An object-oriented approach to data structures and algorithms. Object-oriented analysis, design, and programming, with emphasis on data abstraction, inheritance and subtype polymorphism. Abstract data type specification and correctness. Collections and associated algorithms, such as stacks, queues, lists, trees. Searching and sorting algorithms. Graphs. Data on secondary storage. Analysis of algoritms. Emphasis on object-oriented design, writing and documenting medium-sized programs. This course is designed for majors.

CSC 217: Introduction to Computer Architecture and Machine-Level Programming:-

Introduction to computer architecture and organization. Emphasis on evaluation of performance, instruction set architecture, datapath and control, memory-hierarchy design, and pipelining. Assembly language on a simulator.

CSC 216: Computer Programming in COBOL:-

Computer programming in COBOL. Emphasis on the design, writing, debugging, and testing of business applications programs in a transaction-oriented environment.

CSC 217: Fundamentals of Computer Programming:-

An introduction to computer programming using an object-oriented programming language. Emphasis on the basics of good programming techniques and style. Extensive practice in designing, implementing, and debugging small programs. Use of abstract data types. Interactive and file I/O. Exceptions/error-handling. This course is not designed for computer science, software engineering, and computer engineering majors.

CSC 220: Introduction To Formal Languages And Automata Theory:-

The course presents a study of formal languages and the correspondence between language classes and the automata that recognize them. Formal definitions of grammars and acceptors, deterministic and nondeterministic systems, grammar ambiguity, finite state and push-down automata, and normal forms will be discussed.

CSC 221: Introduction To Human-Computer Interaction:-

Survey of human-computer interaction concepts, theory, and practice. Basic components of human-computer interaction. Interdisciplinary underpinnings. Informed and critical evaluation of computer-based technology. User-oriented perspective, rather than system-oriented, with two thrusts: human (cognitive, social) and technological (input/output, interactions styles, devices). Design guidelines, evaluation methods, participatory design, communication between users and system developers.

CSC 223: Intro Gui Programming/Graphics:-

Design and implementation of object-oriented graphical user interfaces (GUI) and two-dimensional computer graphics systems. Implementation methodologies including callbacks, handlers, event listeners, design patterns, layout managers, and architectural models. Mathematical foundations of computer graphics applied to fundamental algorithms for clipping, scan conversion, affine and convex linear transformations, projections, viewing, structuring, and modeling.

CSC 225: Introduction To Media Computation:-

This course teaches fundamental manipulations of digital media as an introduction to computer science. Basic software engineering principles and programming skills are taught with a programming language that supports object-oriented programming. Simple data types, control structures, array and string data structures and algorithms, testing and debugging.

CSC 226: Introduction To Computational Biology And Bioinformatics:-

Introduction to computational biology and bioinformatics (CBB) through hands-on learning experiences. Emphasis on problem solving in CBB. Breadth of topics covering structural bioinformatics; modeling and simulation of biological networks; computational sequence analysis; algorithms for reconstructing phylogenies; computational systems biology; and data mining algorithms.

CSC 228: Principles Of Computer Architecture And Operating Systems:-

Principles of computer hardware organization and operating systems. From individual microprocessor hardware components to computer network architectures. Operating system principles, with emphasis on concurrency and synchronization, deadlock, memory, scheduling and performance.

CSC 229: Computer Architecture:-

Introduction to the architecture and internal operation of computers, including assembly language. A study of the major components, functional organization, and sequential operation of digital computers during program execution. Several computer architectures will be studied.

CSC 301: Intermediate Computer Programming:-

Intermediate-level programming techniques. Emphasis on designing, writing, testing, debugging, and documenting medium-sized programs. Data structures and their uses. Dynamic memory usage. Inheritance and polymorphism. Algorithm design and efficiency: recursion, searching, and sorting. Event-driven and GUI programming. The software development process. This course is not designed for computer science, software engineering and computer engineering majors. Credit may not be applied toward the major in computer science, software engineering, or computer engineering.

CSC 311: Software Development Practices:-

A practical introduction to methods for managing software development. Process models, requirements analysis, structured and object-oriented design, coding, testing, maintenance, cost and schedule estimation, metrics. Programming projects.

CSC 312: Design and Analysis of Algorithms:-

Basic techniques for design and analysis of efficient algorithms. Sorting, searching, graph algorithms, computational geometry, string processing and NP-completeness. Design techniques such as dynamic programming and the greedy method. Asymptotic, worst-case, average-case and amortized analyses. Data structures including heaps, hash tables, binary search trees and red-black trees. Programming projects.

CSC 314: Discrete Computational Structures:-

Concepts in discrete mathematics as applied to computer science. Logic, proof techniques, set theory, relations, graphs, combinatorics, discrete probability and number theory.

CSC 315: Languages and Machines:-

A study of two classes of languages: formal languages (regular, context-free, and computable) and their associated machines (finite automata, pushdown automata, and Turing machines); and programming languages, including the essential features of imperative, functional, object-oriented, and logic programming languages, together with their design and implementation on modern computers and virtual machines. Includes a substantial number of programming assignments, most of which are language interpreters or machine simulators, to be implemented using a functional programming language that emphasizes recursion and higher-order functions. As a semester project, students must research a new programming language and use it to write a nontrivial application.

CSC 316: Database System Concepts:-

A study of modern database systems and their underlying concepts. Core topics include the relational model, SQL, database design theory, query processing, file structures, transactions, and concurrency. Programming projects provide practical experience in developing GUI database applications.

CSC 317: Internet Programming:-

An introduction to paradigms and languages used in Internet and World Wide Web programming. These include modern tools for client-side and server-side programming and dynamic Web page generation. Advanced topics, such as security and XML, will be covered as time allows.

CSC 421 Numerical Analysis I:-

Solution of systems of linear and nonlinear equations, interpolation, integration, approximation, matrix computations. Problem solution will include the use of software.

CSC 320: Algorithms and Advanced Data Structures:-

Algorithms and advanced data structures, including graphs, heaps, self-adjusting data structures, set representations and dynamic programming. Sample applications, including memory management and data compression. Introduction to NP-complete problems. Correctness proofs and efficiency analysis are stressed.

CSC 321: Linux Operating System Essentials:-

Selected topics include: Linux Distributions, installation, configuration, and management of a Linux based computer system, shell programming, network accessing technologies, package management systems, system security, user, file sharing techniques, interoperation with other computers on the network, and open-source software. This is a hands-on course designed to demonstrate the installation and utilization of the Linux operating system for a personal computer.

CSC 324: Software Construction and User Interfaces:-

Basic theory of grammars, parsing. Language paradigms. State transition and table-based software design. Rapid system prototyping. Review of principles of object orientation, object oriented analysis using UML. Event-driven and clock-driven simulation. Software construction methods. Frameworks and APIs. User interface architecture, evaluation of user interface. Design of windows, menus, and commands. Introduction to format specification and model-based software design. Introduction to domain-specific software engineering.

CSC 325: Projects in Computing and Business Applications:-

Applications of software development methods (requirements collection and analysis, software design, project management, documentation and testing), programming techniques, database designs and administration, network application programming to solve computing needs in business settings. A study of practical applications of emerging technologies in computing. Emphasis on semester-long team programming projects. Lab assignments. Oral and written reports.

CSC 326: Software Requirements Engineering:-

The requirements engineering process, including identification of stakeholders, requirements elicitation techniques such as interviews and prototyping, analysis fundamentals, requirements specification, and validation. Use of Models: State-oriented, Function-oriented, and Object-oriented. Documentation for Software Requirements. Informal, semi-formal, and formal representations. Structural, informational, and behavioral requirements. Non-functional requirements. Use of requirements repositories to manage and track requirements through the life cycle. Case studies, software projects, written reports and oral presentations will be required.

CSC 327: Formal Aspects of Specification and Verification:-

Introduction to prepositional/predicate/temporal logic, program verification using theorem proving, model-based verification using model checking, and tools for verification.

CSC 329: Software Testing:-

Comprehensive study of software testing, principles, methodologies, management strategies and techniques. Test models, test design techniques (black box and white-box testing techniques), integration, regression, system testing methods, and software testing tools.

CSC 400: Introduction to Computational Geometry:-

Introduction to data structures, algorithms, and analysis techniques for computational problems that involve geometry. Line segment intersection, polygon triangulation, 2D linear programming, range queries, point location, arrangements and duality, Voronoi diagrams and Delaunay triangulation, convex hulls, robot motion planning, visibility graphs. Other selected topics. Programming assignments

CSC 411: Introduction to Artificial Intelligence:-

Techniques of artificial intelligence including study of expert systems, natural language processing, search strategies, computer vision and robotics.

CSC 412: Hardware, Software, and Troubleshooting Personal Computers:-

An introduction to the installation, maintenance, troubleshooting, upgrading, simple repair, and management of personal computers found in educational settings. This course will provide numerous laboratory experiences providing hands-on experience with the goal of enabling students to support personal computer laboratories found in PK-12 schools. This course cannot be taken for credit toward a computer science major or minor.

CSC 413: Web-Based Resources in Educational Settings:-

An introduction to the design, implementation, and management of World Wide Web resources over the Internet and Intranet networks. Topics include Internet overview, web authoring, web programming, server setting and maintenance. The objective of the course is to know tools (HTML, JavaScript, and Java applets, and Internet Server software, and Navigator/Internet Explorer software packages), and their applicability in WWW design and management in PK-12 school settings.

CSC 416: Networking and Telecommunications in Educational Settings:-

An introduction to networking and data communications from an educator's perspective. The course will examine the necessary computer hardware, software, and personnel resources relevant to networking and data communication requirements in various educational settings. Local Area Networks, Wide Area Networks, Network Interconnections, and the Internet will be addressed. This course cannot be taken for credit toward a computer science major or minor.

CSC 417: Compiler Construction:-

Topics include lexical analysis, parsing, symbol tables, type checking, run-time organization, code generation, basic code optimization, and the use of compiler development tools. The student must write a complete compiler for a small imperative programming language.

CSC 418: Computer Graphics:-

Introduction to the hardware and software components of graphics systems. Development of algorithms for two-dimensional graphics including windowing, clipping, and transformations; algorithms for three dimensional graphics including viewing, transformations, and removal of hidden lines and surfaces. Data structures for graphics and interactive techniques will be stressed.

CSC 421: Computer Speech, Music and Images:-

This is an applied course focusing on the technical aspects of computer-based multimedia-speech, music, audio, and video. In any given semester, the focus may be more on audio or image processing, or it may be equally balanced between the two. Topics include multimedia data capture and representation, methods of data compression, multimedia information retrieval, and multimedia standards.

CSC 423: Computer Networks:-

An introduction to the theory, concepts and techniques upon which modern computer networks and telecommunication systems are based. The emphasis will be on layered network architectures, the design frameworks for both local and wide area networks and communication protocols.

CSC 426: Wireless Networks:-

An introduction to the fundamental theory, concepts and techniques of wireless communication, wireless networks, network architecture, and wireless applications. Students will gain an understanding of the significance that wireless systems and user mobility have on the construction and handling of a data or telecommunications network. Topics include wireless and ad hoc networks, enabling technologies, multiplexing, protocol design, network security, and quality of service.

CSC 442: Computing for Bioinformatics:- This course focuses on computational techniques used in bioinformatics. Topics will include nucleotide and amino acid data representation, sequence alignment, coding sequence prediction, and use of statistical models. Students will learn to use bioinformatics libraries with a script language such as Python or Perl.

CSC 428: Advanced Programming Techniques:-

Object-oriented programming experience using a language suitable for exploring advanced topics in programming. Topics include memory management, parameter passing, inheritance, compiling, debugging, and maintaining programs. Significant programming projects.

CSC 499: Research Project