XII. Course Descriptions

Computing and Information Science

Department of Computing and Information Science

Note: Credit may be obtained for 1 of CIS*1000 or CIS*1200. Students who major or minor in Computing and Information Science may not receive credit for the following courses unless taken to satisfy the requirements of another program: MATH*1050.

CIS*1000 Introduction to Computer Applications S,F,W (3-2) [0.50]
This course provides a survey of computer systems and software, including an introduction to computer programming, data organization and the social impact of computing. The course contains an emphasis on application packages for personal and business use. Not recommended for students with previous computer science background. Cannot be taken for credit by students taking a major or minor in Computing and Information Science. (Also offered in Distance Education format.)
Restriction(s): CIS*1200, Not available to students registered in B.A.Sc. Program (Applied Human Nutrition major)
CIS*1200 Introduction to Computing F,W (3-2) [0.50]
This course covers an introduction to computer hardware and software, data organization, problem-solving and programming. The course includes exposure to application packages for personal and business use. For students who wish a balance between programming and the use of software packages. Cannot be taken for credit by students taking a major or minor in Computing and Information Science. (Also offered in Distance Education format.)
Restriction(s): CIS*1000
CIS*1250 Software Design I F (3-2) [0.50]
This is an introductory course which involves a general overview of design and problem solving as it is practiced in different disciplines. The course will include an examination of the qualities of software as the end product of the design process. It will include a study of the pervasiveness of software, and the platform specific considerations. The course has an applied focus and will involve software design and development experiences in teams, a literacy component, and the use of software development tools.
CIS*1500 Introduction to Programming F,W (3-2) [0.50]
Introductory problem-solving, programming and data organization techniques required for applications using a general purpose programming language. Topics include control structures, data representation and manipulation, program logic, development and testing. For students who require a good understanding of programming or are planning on taking additional specialist Computing and Information Science courses. This is the entry point to all CIS programs. (Also offered in Distance Education format.)
Restriction(s): CIS*1650
CIS*1910 Discrete Structures in Computing I W (3-2) [0.50]
An introduction to discrete structures and formal methodologies used in computer science, including Boolean, prepositional and predicate logic, finite set theory, functions, relations, and proof techniques.
Restriction(s): CIS*1900
CIS*2030 Structure and Application of Microcomputers F (3-3) [0.50]
This course examines the components of a computer system, including memories, CPU, buses, and input/output subsystems and interface hardware. Programming of these systems is studied, including instruction sets, addressing modes, assembly/machine language programming, development of algorithms for data acquisition, display, and process control.
Prerequisite(s): (CIS*1900 or CIS*1910), (CIS*2500 or CIS*2650)
CIS*2050 Computers and Society S (3-0) [0.50]
Students in this course will investigate and study the social impacts of computing technology. The course will provide a brief introduction to ethics and the history of computing and the Internet. Additional content will focus on areas in which computers and information technology are having an impact on individuals and society including privacy, safety, freedom of speech, intellectual property, work, distribution of wealth, and the environment. This course is intended for students in any discipline. (Offered through Distance Education format only.)
Restriction(s): CIS*3000. This course may not be taken for credit by students in the Software Engineering Major.
CIS*2170 User Interface Design W (3-2) [0.75]
This course is a practical introduction to the area of user interface construction. Topics include user interface components and their application, best practices for user interface design, approaches to prototyping, and techniques for assessing interface suitability.
Prerequisite(s): CIS*1200 or CIS*1500
CIS*2250 Software Design II W (3-2) [0.50]
This course focuses on the process of software design. Best practices for code development and review will be the examined. The software development process and tools to support this will be studied along with methods for project management. The course has an applied focus and will involve software design and development experiences in teams, a literacy component, and the use of software development tools.
Prerequisite(s): CIS*1250, CIS*1500
CIS*2430 Object Oriented Programming F (3-2) [0.50]
This course introduces the Object Oriented (OO) approach to programming and algorithm design. Topics will include the creation and use of objects from class libraries, user defined objects, inheritance, modularity, generic code, components, collections and containers, and an introduction to OO design methodologies.
Prerequisite(s): CIS*2500
CIS*2460 Modelling of Computer Systems F (3-2) [0.50]
This course examines discrete simulation based on event queues and random number generation. Methods for generating input data, measuring and evaluating results using standard statistical tests are studied. Topics covered will include model calibration and validation, and algebraic, probabilistic and simple queuing models of software and hardware operation.
Prerequisite(s): CIS*2500
CIS*2500 Intermediate Programming W (3-2) [0.50]
How to interpret a program specification and implement it as reliable code. Experience with pointers, complex data types, and important algorithms. Intermediate tools and techniques in problem-solving, programming and program testing.
Prerequisite(s): CIS*1500
Equate(s): CIS*2650
CIS*2520 Data Structures F (3-2) [0.50]
Basic data structures are studied including: stacks, queues, lists, trees, hashing, search trees, and graphs. Topics include their representation, uses, and algorithms for their traversal and manipulation. The emphasis is on using these structures and assessing the relative effectiveness of alternative implementations.
Prerequisite(s): CIS*2500, (1 of CIS*1910, ENGG*1500)
Equate(s): CIS*2420
CIS*2750 Software Systems Development and Integration W (3-2) [0.75]
Techniques and tools used in the development of large software systems. Methods for organizing and constructing modular systems, manipulating files, an introduction to interface design, and use of databases. Software tools for managing projects, database connectivity, configuration management, and system application programmer interfaces.
Prerequisite(s): CIS*2430, CIS*2520
Restriction(s): CIS*2450
CIS*2910 Discrete Structures in Computing II F (3-2) [0.50]
This course introduces graph theory, combinatorics and other discrete structures used in computer science, including graph representations, traversal and simple graph algorithms, trees, counting strategies, summations, and an introduction to finite probability, recursion, and finite state machine models.
Prerequisite(s): CIS*1500, (CIS*1910 or ENGG*1500)
Restriction(s): CIS*1900
CIS*3000 Social Implications of Computing F (4-0) [0.50]
This course focuses on social, ethical, legal and managerial issues in the application of computer science to the information technology industry. Through seminars and case studies, human issues confronting Computer Science professionals will be addressed.
Prerequisite(s): 2.00 credits in CIS courses
Restriction(s): CIS*2050 Cannot be taken for credit by students in B.Comp. Software Engineering.
CIS*3090 Parallel Programming F (3-1) [0.50]
This course examines the current techniques for design and development of parallel programs targeted for platforms ranging from multicore computers to high-performance clusters, with and without shared memory. It includes theoretical models for, and hardware effects on, parallel computation, the definitions of speedup, scalability, and data- versus task-parallel approaches. The course will also examine strategies for achieving speedup based on controlling granularity, resource contention, idle time, threading overhead, work allocation, and data localization.
Prerequisite(s): (CIS*2030 or ENGG*3640), CIS*3110
CIS*3110 Operating Systems W (3-1) [0.50]
Operating Systems in theory and practice. Components in a system: scheduling and resource allocation; process management, multi-programming, multi-tasking; I/O control and file systems; mechanisms for client-server computing. Examples from contemporary operating systems.
Prerequisite(s): (CIS*2500 or CIS*2650). Recommended (CIS*2030 or ENGG*2410).
CIS*3120 Digital Systems W (3-2) [0.50]
This course examines Boolean algebra, minimization of Boolean expressions, design of combinational and sequential logic circuits, memory design, control, ALU, bus design, microprogramming and CPU design.
Prerequisite(s): CIS*2030
CIS*3150 Theory of Computation F (3-0) [0.50]
This course explores the theory of computation including automata theory, Turing machines and their variants, formal languages, parsing, the Halting problem, undecidability, and NP-completeness.
Prerequisite(s): (CIS*2450 or CIS*2750), CIS*3490
Restriction(s): CIS*3620, CIS*4600, CIS*4620
CIS*3190 Software for Legacy Systems W (0-0) [0.50]
This course is an introduction to legacy software systems used in business, manufacturing, and engineering. Topics include COBOL programming, mainframe systems, and integration of legacy systems with contemporary computing systems. (Offered thorugh Distance Education format only.)
Prerequisite(s): CIS*2500 or work experience in a related field.
CIS*3210 Computer Networks F (3-1) [0.50]
This course covers the high-level (protocol) oriented aspects of computer networks, specifically: application, session, transport and network layers. It includes the internet, socket-level programming, multimedia and quality of service issues. The hardware aspects (switches, LANs, modems, transmission paths) are covered at only a functional level.
Prerequisite(s): CIS*3110
Restriction(s): CIS*4200
CIS*3250 Software Design III F (3-3) [0.50]
This course will examine the historical development of design methodologies and working with legacy systems. It will include an examination of programming paradigms and trends in software design from the past and present. The course has an applied focus and will involve software design and development experiences in teams, a literacy component, and the use of software development tools. (First offering - Fall 2011)
Prerequisite(s): CIS*2250, CIS*2500
CIS*3260 Software Design IV F (3-3) [0.50]
This course is a study of software architectures and system design methodologies. This will include advanced techniques for project management and experience evaluating software tools. The course has an applied focus and will involve software design and development experiences in teams, a literacy component, and the use of software development tools. (First offering - Fall 2012)
Prerequisite(s): CIS*2430, CIS*2750, CIS*3250
CIS*3490 The Analysis and Design of Computer Algorithms W (3-2) [0.50]
The design and analysis of efficient computer algorithms are studied. Topics which will be studied include: standard methodologies, asymptotic behaviour, optimality, lower bounds, implementation considerations, graph algorithms, matrix computations (e.g. Strassen's method), NP-completeness.
Prerequisite(s): (CIS*1900 or CIS*2910), (CIS*2420 or CIS*2520)
CIS*3530 Data Base Systems and Concepts F (3-1) [0.50]
Review of data organization and data management principles with the perspective of analyzing applications suitable for implementation using a DBMS. Analysis of several data base models, query specification methods, and query processing techniques. Overview of several related issues including concurrency control, security, integrity and recovery. Students are expected to demonstrate concepts through project assignments.
Prerequisite(s): (CIS*2420 or CIS*2520), (CIS*2450 or CIS*2750)
CIS*3700 Introduction to Intelligent Systems W (3-1) [0.50]
This course covers the core topics of Artificial Intelligence, namely: agents and environment, search, knowledge representation, reasoning, and learning. The last three topics are covered using logic as the common formalism for coherence. The course introduces a broad range of basic concepts, terminology, and applications, in addition to providing some specific, widely applicable methodologies.
Prerequisite(s): (CIS*3750 or CIS*3760), (CIS*2460 or STAT*2040)
Restriction(s): CIS*4750, CIS*4760
CIS*3750 System Analysis and Design in Applications F (3-2) [0.75]
An introduction to the issues and techniques encountered in the design and construction of software systems. The theory and models of software evolution. Topics include requirements and specifications, prototyping, design principles, object-oriented analysis and design, standards, integration, risk analysis, testing and debugging.
Prerequisite(s): CIS*2750
Restriction(s): CIS*3430
CIS*3760 Software Engineering W (3-2) [0.75]
This course is an examination of the software engineering process, the production of reliable systems and techniques for the design and development of complex software. Topics include object-oriented analysis, design and modeling, software architectures, software reviews, software quality, software engineering, ethics, maintenance and formal specifications.
Prerequisite(s): CIS*2750, (CIS*3110 recommended )
Restriction(s): CIS*3200
CIS*4000 Applications of Computing Seminar F,W (0-6) [0.50]
This capstone course provides students an opportunity to combine their area of application with their studies in computing via a course project and seminar series. Application areas discussed in any particular semester will depend on areas of application selected by students. Students are required to present their work in a seminar and also to participate in the critical analysis and review of the work of other students taking this course.
Prerequisite(s): Registration in semester 7 or higher of the B. Comp. Major in Computer Science and completion of a minimum of 2.50 credits in an Area of Application.
CIS*4050 Advanced Computer Architectures F (3-1) [0.50]
Central processor architectures, control and microprogramming, memory systems, special architectures, underlying support for special architectures, architectures suitable for very large scale integration. (Offered in even-numbered years and may be offered in odd-numbered years.)
Prerequisite(s): CIS*2030, CIS*3110, CIS*3120
CIS*4110 Computer Security W (3-1) [0.50]
This course is a practical survey of the principles and practice of information security. Topics include but are not limited to encryption (symmetric and public key cryptography, key exchange, authentication), security issues and threats (eavesdropping, impersonation,denial of service, viruses, worms, access violations, PKI), system and network security, intrusion detection, access control (DAC, MAC, RBAC), database security, the common criteria, and threat risk management.
Prerequisite(s): CIS*3110
CIS*4150 Software Reliability and Testing F (2-2) [0.50]
This course serves as an introduction to systematic methods of testing and verification, covering a range of static and dynamic techniques and their use within the software development process. Concepts such as defining necessary reliability, developing operational profiles, techniques to improve and predict software reliability, preparing and executing tests, black box testing, white box testing, unit testing, system testing, and integration testing will be explained.
Prerequisite(s): CIS*3750 or CIS*3760
CIS*4210 Telecommunications W (3-1) [0.50]
This course covers the low-level and the hardware-oriented aspects of computer communications, specifically the physical, link, and network layers. It includes basic telecommunication technology, local area networks, low level protocols, switching technologies, wireless and mobile networking, data and stream compression, and error coding. (Offered in odd-numbered years.)
Prerequisite(s): CIS*3750 or CIS*3760
Restriction(s): CIS*4200
CIS*4250 Software Design V F (0-6) [0.50]
This is a capstone course which applies the knowledge gained from the previous Software Design courses to a large team project. The course has an applied focus and will involve software design and development experiences in teams, a literacy component, and the use of software development tools. (First offering - Fall 2013)
Prerequisite(s): CIS*2750, CIS*3260, CIS*3750
CIS*4300 Human Computer Interaction F (2-2) [0.50]
This course examines the methods for user interface software design, including interface representations and testing. Topics which will be studied include the evaluation and design of sample application systems, impacts of computer-based information systems on individuals and organizations, implementation and testing tools, and planning of learning stages and design of assistance subsystems.
Prerequisite(s): CIS*3110, (CIS*3750 or CIS*3760)
CIS*4410 Trends in Distributed Systems W (3-1) [0.50]
This course examines the technical issues surrounding modern and future distributed commercial enterprises. Special attention is given to new communication modes, high volume, data-intensive systems, distributed transactions and security mechanisms.
Prerequisite(s): CIS*3210, (CIS*3750 or CIS*3760)
CIS*4430 Information Organization and Retrieval W (3-1) [0.50]
This course studies advanced techniques for information management. This includes the analysis of advanced indexing structures, information retrieval, feedback strategies, text searchings, automatic indexing, database query optimization and system support, web based retrieval. (Offered in even-numbered years and may be offered in odd-numbered years.)
Prerequisite(s): CIS*3110, CIS*3530, (CIS*3750 or CIS*3760)
CIS*4450 Special Topics in Information Science U (3-1) [0.50]
A variety of advanced topics mainly from areas within general information processing. Subject areas discussed in any particular semester will depend on the interests of the students and the instructor. Students should check with the Department of Computing and Information Science to determine what topic will be offered during specific semesters and which prerequisites, if any, are appropriate.
Restriction(s): Instructors consent required.
CIS*4500 Special Topics in Computing Science U (3-1) [0.50]
A variety of advanced topics within Computing Science. Subject areas discussed in any particular semester will depend upon the interests of both the students and the instructor. Students should check with the Department of Computing and Information Science to determine what topic will be offered during specific semesters and which prerequisites, if any, are appropriate.
Restriction(s): Instructor consent required.
CIS*4650 Compilers W (3-1) [0.50]
This course is a detailed study of the compilation process. Topics include interpreters, overall design implementation of a compiler, techniques for parsing, building and manipulating intermediate representations of a program, implementation of important features, code generation and optimization.
Prerequisite(s): CIS*2030, CIS*3110, CIS*3150
Restriction(s): CIS*3650
CIS*4720 Image Processing and Vision W (3-1) [0.50]
This course is an introduction to the process of image processing. Emphasis is placed on topics such as image enhancement, segmentation morphological analysis, texture analysis, visualization and image transformations. Applications of image processing in medicine, forensics, food and security are surveyed. (Offered in odd-numbered years.)
Prerequisite(s): (CIS*2450 or CIS*2750), CIS*3110, (CIS*2460 or STAT*2040), (CIS*3700 recommended)
Restriction(s): CIS*4760
CIS*4780 Computational Intelligence F (3-1) [0.50]
This course introduces concepts of soft computing: modelling uncertainty, granular computing, neurocomputing, evolutionary computing, probabilistic computing and soft computing for software engineering. (Offered in odd-numbered years.)
Prerequisite(s): (CIS*3750 or CIS*3760) CIS*3490, (CIS*2460 or STAT*2040), (CIS*3700 recommended)
Restriction(s): CIS*4750
CIS*4800 Computer Graphics W (3-1) [0.50]
This course is an introduction to computer graphics. Topics include graphics programming concepts, geometrical transformations, viewing 3-D projections, raster graphics, sculptured surfaces, visible surface determination, image processing and other special topics. Practical issues will be covered by assignment using currently available graphics equipment. (Offered in even-numbered years.)
Prerequisite(s): CIS*3110, (CIS*3750 or CIS*3760)
CIS*4820 Game Programming W (3-1) [0.50]
This course will focus on the components found in modern 3-D game engines. It will emphasize the algorithms and data structures required to create real-time computer graphics, sound and network communications. (Offered in odd-numbered years.)
Prerequisite(s): CIS*3110, (CIS*3430 or CIS*3750)
CIS*4900 Computer Science Project S,F,W (0-6) [0.50]
Planning, developing and writing a research proposal under individual faculty supervision. The course, in continuation with CIS*4910 provides senior undergraduates an opportunity to pursue an independent course of study. The topic selected will be determined by agreement between the student and the faculty member with expertise in the area.
Prerequisite(s): 7.00 credits in CIS
Restriction(s): Instructor consent required.
CIS*4910 Computer Science Thesis S,F,W (0-6) [0.50]
This course is a continuation of CIS*4900. The student will conduct and write an undergraduate thesis under the individual supervision of a faculty member. In addition the student is required to present his/her work in a seminar and also participate in the critical analysis and review of the work of other students taking this course.
Prerequisite(s): CIS*4900
Restriction(s): Instructor consent required.
University of Guelph
50 Stone Road East
Guelph, Ontario, N1G 2W1
Canada
519-824-4120