Computer Science 100: Word Processing
In this non-credit course students acquire accuracy and speed on using the computer - keyboard by learning the “blind typing method”. Students also develop their overall computer literacy by gaining exposure to the Windows operating system, including basic training in word processing (Word).
Computer Science 101: Introduction to Computing
The course aims at making the student an effective computer user within the contemporary networked environment of both the office and the Internet. Students learn the usage of modern programs suitable for composition, calculation and presentation, as well as the facilities available for communicating and researching through the Internet. The fundamentals of how the computer and a network of computers work are discussed in order to provide a basic understanding of the modern computing environment. May be taken as Computer Science GER.
Computer Science 105: Introduction to Programming I – Structured Programming
This is an introduction to computing and computer programming using the Java or C language. Students are introduced to the basic elements of computing hardware, information technology and computer programming. Programming is explained, demonstrated and practiced using the Java or C programing language. Ultimately the course aims to advance beyond basic computing skills towards software engineering, instructing students to develop autonomy as sophisticated computer users and programmers. May be taken as Computer Science GER.
Computer Science 106: Introduction to Programming II – Object oriented programming
The course provides a systematic coverage of Object Oriented Modelling and Applications. Topics include Object Models, Object Class Design, Inheritance and Polymorphism, Software Reuse with Classes, Application Modelling, Simulation with Object Classes, and Business Process Modelling with Objects. Object-oriented programming (OOP) is a revolutionary concept that changed the rules in computer program development. OOP is organized around “objects” rather than “actions”, data rather than logic. Historically, a program has been viewed as a logical procedure that takes input data, processes it, and produces output data. The programming challenge was seen as how to write the logic, not how to define the data. Object-oriented programming takes the view that, “what we really care about:”, are the objects we want to manipulate rather than the logic required to manipulate them.
The course expands on the material covered in CS105 with the following aims:
• Further cultivation of algorithmic thinking and refinement of existing procedural programming skills
• Familiarization with the Object Oriented programming methodology
• Exposure to Java classes for building graphical interfaces and other extensions
May be taken as Computer Science GER. Prereq: Computer Science 105
Computer Science 107: Digital Media Toolkit
This course is an introduction to digital multimedia. All media components (digital images/graphics, text, animation, sound and digital video) are introduced and their parameters defined and studied. Software multimedia development tools necessary for the creation or capture of digital media are presented and students acquire hands-on experience with a package for each media category. Hardware essential for the capture/creation of the media is also presented. Multimedia project design parameters are examined and applied to a student capstone project. The main software used in this course will be Adobe Bridge, Adobe Photoshop, Adobe Premier Pro, Adobe Camera Raw and/ or Lightroom. Other software may be used, which will be announced at the beginning of the course. May be taken as Computer Science GER.
Computer Science 130: Introduction to electronics and robotics programming
The primary difference between robots and other types of computing devices is their ability to have a physical effect on their environment, rather than to simply gather, process and communicate data. This is particularly apparent in the case of autonomous and semi-autonomous mobile robots: they face the challenge of acquiring data from their surroundings, selecting their own navigation waypoints and dynamically altering their course of action to account for obstacles, power supply restrictions and unexpected events. In this introductory experiential learning course, students will work in teams and be challenged to build both the hardware chassis and software algorithms for such robots, using the Lego Mindstorms robotics kit and additional resources. The course will commence with simple sensor data acquisition, proceed with the use of actuators, basic navigation, obstacle avoidance, sensor data fusion and conclude with several robotic team challenges. Prereq: Basic computing, numerical and analytical skills. Previous exposure to programming code considered an advantage but not necessary.
Computer Science 151: Quantitative Computing
The course aims at deepening student quantitative skills by interrelating mathematical modeling and spreadsheet implementation. Students are presented real-world problems encountered in the modern enterprise, with emphasis on spreadsheet computing and are taught both the mathematical background and the necessary structures for tackling the problem with spreadsheets. Emphasis is placed on mutual translation of mathematical model and spreadsheet implementation. Focus is on Business Planning and topics are drawn from Microeconomics, Finance, Marketing, Managerial and Financial Accounting. Mathematical topics covered include: Real numbers and their computer implementation, polynomial, exponential and logarithmic functions, matrices, linear programming and optimization, recursive models, discrete approximation of the derivative and integral. May be taken as Computer Science GER. Prereq: Computer Science 101 or 105, Math 101
Computer Science 201: Business Computing
The course aims at presenting Business majors with the basic computing structures needed to support a company’s management. Students will be exposed to data tables from a variety of business activities as well as the database techniques necessary to model and effectively process these data for the purposes of company assessment and planning. Examples of applications residing in the WWW will be presented, analyzed and subsequently implemented by students with the database medium used in the course. Prereq: Computer Science 151
Computer Science 205: Business Data Management
The purpose of COMP SCI 205 is to introduce the idea of business data management, data modeling, and processing methodologies with the use of standalone design tools and personal databases. It aims at fostering proper data design through the relational methodology and developing all necessary data processing and presentation skills. The aims of this course are to:
• Define the role of Systems Analyst and Database designer.
• Explain System Analysis and interpersonal communication skills that the System Analyst must have
• Explain Project Management and discuss tools that the system analyst must have
• Explain the Methodologies that are used for Systems Analysis and Database Design
• Explain the various tools that certain methodologies use
Provide students the opportunity to work on the most popular database (Oracle), in a project in order to implement the taught methodologies. Prereq: Computer Science 105
Computer Science 206: Web Development
Computer Science 207: Multimedia II
This course is the continuation of CS107. Advanced editing techniques of digital images and digital video will be presented, studied and practiced. Basic animation techniques (using Macromedia Flash) will be presented, studied and practiced. Students will acquire further skills on capture hardware (Photo, Video, Audio). Individual student capstone projects on Video and animation will be assigned at the end of the course. Prereq: Computer Science 107 or permission of instructor
Computer Science 209: 3-D Digital Design I
The focus of this course is the introduction to the 3D workspace, creation tools, and the basics of 3D design. Including modeling 3D geometry, creating material textures and lighting, and rendering output to animation and still image formats. 3D animation techniques will also be presented, studied and practiced. The concepts and interrelationships of developing a story and character from premise to production will be presented, studied and implemented by students on a final capstone project. Students will acquire hands-on experience using 3ds max and will build on their 2D skills with the use of Photoshop as an aid in the creation of texture maps. Prereq: Computer Science 107
Computer Science 215: Data Structures
The purpose of CS215 is to introduce students to the main concepts and implementation principles of object-oriented programming and data structures, using Java as the programming language. This course builds on the knowledge and skills acquired in CS105 – Introduction to Programming I. The course is split in two parts; the first part deals with object-oriented programming using Java, re-enforcing the fundamental concepts learned in CS105. The second part of the course introduces data structures. The data structures examined include arrays, lists, queues, stacks, trees, heaps, hash tables and graphs. Searching, sorting, inserting, deleting and other simple operations on these structures will also be discussed.
Prereq: Computer Science 106
Computer Science 219: Video Game Design
This course introduces the critical study of computer video games and the professional practice of game design. Through readings, discussions, research, and practical “hands-on” projects, students will better understand the current market for games and simulations and develop the fundamental skills necessary to enter the international computer games industry. Although the commercial video game pipeline will be discussed, the actual production framework for the class will mirror a ‘Indie” game team “prototype game level” development. Students will be expected to fill multiple roles in the production process, and gain hands-on experience in the collaborative processes of game design, project management, scripting, content creation pipeline, in game animation, and play-testing. Prereq: Computer Science 107; CS105 recommended or permission by instructor
Computer Science 222: Cisco Networking Fundamentals and Router Configuration
This course offers an introduction to computer systems and networking fundamentals based on the OSI network model and industry standards. The first part teaches the fundamentals of network design and the installation of cabling. Topics covered are network topologies, IP addressing, including subnet masks, networking components, and basic network design. In the second part of the course, students begin simple router configuration exercises and are introduced to LAN switching. Topics covered are routing theory and router technologies, router configuration, routed and routing protocols.
Prereq. Computer Science 101 or 105 or permission by instructor
Computer Science 230: Introductory Systems Programming
The course continues from CS105, Structured Programming, aiming to making students familiar with a variety of fundamental software engineering challenges which can be solved by developing the appropriate software algorithms. The course furthers algorithmic skills with increased emphasis on systems programming. More elaborate data structures are manipulated and the role of libraries accessing Operating System resources (Disk, I/O) is examined. In this manner the course serves as a bridge between the Programming Fundamentals and the Computing Systems programme threads. The course employs a high-level language (C++) and investigates structured programming as follow-up to the introductory course in programming. More elaborate structures are learned and employed, in order to solve a wide range of tasks. Intricacies of the C/C++ languages are investigated and related to computer architecture (pointers, variable addresses, memory allocation). The course, in addition to furthering algorithmic thinking skills, also serves as the introductory course for the Computing Systems programme thread, as the relationship of the high level language with the underlying computer system is investigated and applied to system programming tasks involving I/O with a variety of external devices (user interaction, storage, microcontrollers). Prereq. Computer Science 101 or 105 or permission by instructor
Computer Science 235: Artificial Intelligence
This introduction to the subject of Artificial Intelligence (AI) will have as its central subject the question “Can machines think?” The course considers the history of “thinking machines” and the current state of the art. Typical cognitive tasks performed by machines involve visual perception and recognition, understanding language and translation, diagnosing a patient, and playing games such as chess. The course asks at what point we may say that machines are intelligent (Turing Test); what is computation, what is computable, and what is decidable (Church-Turing Thesis); whether thought is simply a kind of computation and the human mind a kind of computer (Classical symbol-manipulating AI vs. connectionism/neural networks); whether there are aspects of human intelligence that cannot be transformed into algorithms; and the relation between AI and the building of robots and other “autonomous agents.” Prereq: Computer Science 101 or 105, Philosophy 101
Computer Science 250: E-commerce
This course provides students with a broad understanding of the electronic commerce domain. It introduces aspects of ecommerce, and students gain insight into technical, business, legal and policy issues. On completion of the course business students will be able to understand what e-commerce is and how to exploit an e-commerce strategy in an organization. Students will be ready to comprehend the e-commerce domain and apply it technically. Prereq: Computer Science 101 or 105 Computer Science 300: Mobile Application Programming This course focuses on the fundamentals of mobile strategy and development, application architecture and design. Students will have the opportunity to learn the benefits and challenges of mobile application planning, design, development and strategy through real world examples and actual project work. Through readings, discussions, research, and practical “handson” projects, students will better understand the current market for mobile applications and develop the fundamental skills necessary to enter the mobile application industry. This course aims to teach how to build cross-platform mobile solutions to solve complex problems using iOS and Android phones and tablets. The course will teach students how to develop software for iOS and Android mobile devices through real world examples and strategies. Students will be guided through a complete mobile development lifecycle during the semester, and be given the opportunity to develop a series of applications.
Prereq: Computer Science 106 or permission by instructor
Computer Science 304: Introduction to Mobile Device Programming
This course focuses on learning to program small size applications (apps) for Android, the most common open source operating system for smartphone and tablet devices. Students will be introduced to the Android software development kit and learn to write apps that combine sensor readings with user input, deposit and retrieve data from the cloud and publish their creations on the Android app ecosystem. There will be a final app creation competition which will be judged on utility, originality, versatility and coding elegance. Programming experience is recommended for all participants.
Prereq: Computer Science 105
Computer Science 305: Programming in C++ and Matlab
This course builds on the algorithmic skills developed by students, and focuses into materializing this knowledge into developing computer programs to tackle real world problems using the programming language C++. Topics include program structure, functions, arrays, pointers. The course also provides an overview of the top-ranked Mathematics software Matlab. A final integrated project addresses the issues involved into combining C++ and Matlab and helps students appreciate problem solving in the real world environment.
Computer Science 306: Advanced Web Development
Computer Science 309: 3-D Digital Design II
This Course will build on the existing cs209 course and serve as a more in-depth study of 3d digital design in practice and theory. This course will continue development from cs209 topics, and the following intermediate to advanced topics which are beyond the scope of CS209, will be presented, studied and practiced. This includes, Nurbs and Patch surface modeling, advanced Material, Mapping and Lighting techniques and more advanced Rendering methods. Advanced character animation tools will also be covered including Character studio and Max’s character animation tools. It will also cover Dynamic simulations using Reactor and introduces max scripting. Prereq: Computer Science 209
Computer Science 310: Hardware & Computer Architecture
This course addresses the structure and function of modern digital computing devices, ranging from the compilation process down to the hardware level. Despite the pace of change and variability in the fields of informatics, electronics and computer engineering, certain fundamental digital design concepts apply consistently throughout. CS310 students will both gain the relevant theoretical understanding and have a chance to apply it in practice designing, simulating, troubleshooting and optimizing their own combinational and sequential logic circuits. The course concludes with a discussion on system level organization and architecture of modern computing devices. This course builds on knowledge and skills acquired in CS105 – Introduction to Programming I. Upon successful completion of the course students be able to:
• Understand and be able to explain the significance and function of fundamental components within a typical modern
computing device (processor, memory, I/O, operating system), their interconnections with each other and the outside world.
• Comprehend and follow the data flow through the internal structure of a digital microprocessor.
• Understand the importance and function of logic gates as primary building components in digital design.
• Analyse combinational digital circuits and optimize them using Karnaugh maps.
• Be able to design, simulate, troubleshoot and optimize their combinational and sequential digital logic circuits.
• Recognize and understand basic Assembly language and Machine Code.
Prereq: Computer Science 105
Computer Science 312: Database Management Systems
The purpose of the course is to offer a systematic coverage of modern Database Computing theory and technology. Topics include: Relational Algebra, Data Modelling, Database Design, Client-Server Database Management Systems, Interface Design, trends in Database Systems, combination of Object Oriented Modelling and Relational Databases. Prereq: Computer Science 205
Computer Science 321: Operating Systems
This course deepens understanding of how contemporary computing systems are structured and, in particular, supported by an Operating System. It is a culmination course within the Computing Systems programme thread. Operating Systems are the brain of any computing system. They handle the body/DNA (hardware) as well as behaviour (usage of system by user). Following rapid to revolutionary technological developments the field of Operating Systems also undergoes tremendous changes, which constantly evolve the conception of an OS and of course the technological challenges involved in its implementation. The course aims at outlining the role of an OS in a diachronic way while comparing and contrasting design choices spanning the evolution of the field. It aims at defining fundamental needs that a von Neumann machine has from the Operating System in order to be functional, optimal and attractive to the user. The course explains Operating Systems architecture and examines trade-offs involved in different, evolving systems. It further examines diachronic as well as contemporary issues involved in Operating System design by comparing and contrasting relevant design and algorithmic choices. The course involves lab work: Communication with the OS at a low level via a Linux shell and programming tasks addressing aspects of Operating System design and implementation. Prereq: Computer Science 105
Computer Science 322: Network Operating Systems and Administration
This course aims to provide the student with the knowledge of how computer networks are designed, engineered and operated. This includes knowledge of the fundamental algorithms used in the management of both resources and traffic and how these algorithms may interact with application programs. Instruction includes, but is not limited to network terminology and protocols, network standards, LANs, WANs, OSI models, cabling, cabling tools, routers, router programming, star topology, and IP addressing. The student will study and design networks, using Ethernet, TCP/IP Addressing Protocol, and dynamic routing. Particular emphasis is given to the use of decision-making and problem-solving techniques in applying science, mathematics, communication, and social studies concepts to solve networking problems. Prereq: Computer Science 215
Computer Science 323: Java Network Programming
The aims of the course are to provide students with the basic knowledge and understanding of computer networks with Java essentials - how Java language associates with computer networking topics. This ranges from the essential elements of the Java programming language to networking fundamentals and distributed systems’ principles. It will also provide an introduction to the theory, design and implementation of network software. Prereq: Computer Science 105
Computer Science 325: Distributed Applications
The purpose of the course is to examine in detail the software and hardware technologies prevalent in the Internet and provide an introduction to the principles and methods for creating distributed on-line client/server applications that are the basis for electronic commerce as it is conducted over the Internet. Methods and tools such as HTML, the Common Gateway Interface, PHP, database connectivity tools and MySQL are presented. Coverage is also given to emerging standards for information exchange, encryption and validation. Prereq: Computer Science 312
Computer Science 330: Introduction to Mobile Robotics
The primary difference between robots and other types of computing devices is their ability to physically interact with their environment, rather than to simply gather, process, store and communicate data. This is particularly apparent in the case of autonomous and semi autonomous mobile robots: they face the challenge of acquiring data from their surroundings, selecting their own navigation waypoints and dynamically altering their course of action to account for obstacles, power supply restrictions and unexpected events. In this course theoretical instruction is combined with experiential learning and challenge driven software development. Students participating in this course are challenged individually and in teams to build the hardware chassis and software control algorithms for mobile robots. The course assumes a basic background in structured programming and proceeds with an introduction to both visual and text source code robotic programming (C, RobotC); basic electronics circuit design and troubleshooting; microcontroller programming; sensor data acquisition algorithms; actuator control; robotic navigation and obstacle avoidance; basic sensor data fusion; and concludes with a final robotic design challenge which integrates all aforementioned knowledge and skills. This course builds on structured programming skills developed in CS105: Introduction to Programming. Prereq: CS 105: Introduction to Programming or equivalent
Computer Science 333: Cisco Advanced LAN and WAN Design
In the first part of this course, students learn to configure routers and switches and use network management techniques to find and fix network problems. Topics covered include advanced router configuration, LAN switching theory, and VLANs. There is significant emphasis on project-based learning. In the second part of the course, concepts and methods involved in wide area networking (WAN) design and implementation are introduced. Topics include WAN theory and design, WAN technology, PPP, Frame Relay, and ISDN. Numerous topics and issues are covered through the use of threaded case studies. By the end of this course, students complete advanced projects in network design and management. Successful completion of this course prepares students for the Cisco Certified Networking Associate test (CCNA). Prereq: Computer Science 222
Computer Science 412: Object Oriented Programming
The course revisits Object Oriented application development methodology at the Senior level, examining its effectiveness in the life cycle of professional applications and software reuse through the adoption of Object Oriented Design Patterns. It presupposes the knowledge earned through the introductory line of the Programming Fundamentals programme thread and follows level 5 modules relating to Data Modelling (CS 312) and Systems Design (CS450) while specialising them within the context of Web Development. Currently CSC 325 (Distributed Systems) is a necessary prerequisite concerning web deployment technologies. The module mostly emphasizes the employment of OO concepts to Web Development yet it is of general enough nature for a level 6 module as the design patterns examined are applicable to a wide range of technologies and application domains. Prereq: Computer Science C215, CS 312, CS325 or permission by the instructor.
Computer Science 421: Computer Systems Security
This course aims at providing both a theoretical and practical background concerning issues of security in modern, networked systems. Cryptography is covered first (essentially discussions of standard algorithms). The remainder of the module focuses on techniques that can be used to safeguard real systems. Topics that are covered include Key management and credentials, Steganography and watermarking, Network security (VPNs, Firewalls, Intrusion Detection) and System Security Policies. Risk assessment and threat models as well as social engineering will be covered. Prereq: Computer Science 321, CS322 or permission by the Instructor.
Computer Science 422: Advanced DBMS
This course focuses on creating and manipulating databases using SQL and PL/SQL programming languages for Oracle databases. Advanced query capabilities and procedural constructs are described using SQL and PL/SQL. The theoretical foundation for using these capabilities is presented. Performance issues are discussed including indexing, key definitions, and data constraints. The role of application development in ease of use, query optimization, and system performance is discussed. The module aims to teach students to use advanced SQL statements and PL/SQL programming features such as IF statements, Loops, Stored Functions/Procedures, Tables, Cursors, Stored Packages, Stored Triggers and creating and maintaining various databases. SmartDraw and Designer of Oracle is used for ERD’s. APEX, SQL Plus and SQL Navigator, SQL Server Management Studio are used as user interface of the databases. Prereq: Computer Science 312
CS 443 – CS 444: Capstone Project
This is a set of linked courses to be taken in sequence over the course of the senior year. The course aims to give students the opportunity to work in a guided but independent fashion to explore a substantial problem in depth, making practical use of principles, techniques and methodologies acquired elsewhere in the program of studies. It also aims to give experience of carrying out a large piece of individual work and in producing a final project report. It has two distinct phases: the preparatory phase focusing on literature review, assessment of Technologies and Project Specification and the implementation phase focusing on project design, development, documentation and presentation.
Computer Science 450: System Analysis and Design
The module introduces the waterfall model for system/application development and the formal tools employed in its various stages. The objectives of the module are to:
• Provide formal tools for functional and non-functional requirements collection and documentation (ERD, UML, DFD,
• Define the role of the systems analyst and designer.
• Build project management and interpersonal communication skills that the system analyst must have.
• Explain the methodologies that are used for systems analysis and design.
• Follow through the waterfall model (and discuss deviations therefrom), presenting the relevant tools at each stage.
• Provide the problem solving background for resolving trade-offs inherent in design.
• Present principles of quality and correctness testing.
• Provide students the opportunity to work as a team of analysts and designers in a project to implement the taught methodologies.
Students develop technical, analytical and business skills that support the pursuit of professional careers and advanced computer science studies. Prereq: Computer Science 201 or 205
Computer Science 499: Advanced Programming Tools
This course is a complete introduction to .NET and object-oriented programming. This course will help students build a solid foundation in .NET, and show how to apply these skills by using numerous examples. Learning .NET introduces fundamentals like Visual Studio .NET, a tool set for building Windows and Web applications. Students learn about the syntax and structure of the Visual Basic .NET language, including operators, classes and interfaces, structures, arrays, threads, console, passing parameters, sessions, cookies and manipulating all type of strings. Students will also be asked to develop various kinds of applications--including those that work with databases (ADO)--and web services (ASPX) and making use of XML. Finally the course focuses on how to build installable applications using the Setup platform of .NET to create .MSI self installed applications. Prereq: Computer Science 412 or Permission of instructor