Brock University Undergraduate Calendar

Computer Science Courses
COSC 0N01 Co-op Work Placement I First co-op work placement (4 months) with an approved employer. Restriction: open to COSC Co-op students. COSC 0N02 Co-op Work Placement II Second co-op work placement (4 months) with an approved employer. Restriction: open to COSC Co-op students. COSC 0N03 Co-op Work Placement III Third co-op work placement (4 months) with an approved employer. Restriction: open to COSC Co-op students. COSC 0N04 Co-op Work Placement IV Optional co-op work placement (4 months) with an approved employer. Restriction: open to COSC Co-op students. COSC 1P02 Introduction to Computer Science Computers and computer programming in a high-level language (normally Java). Topics include computer fundamentals, problem solving and software development, programming language syntax and semantics, methods, input/output, control structures and data types. Lectures, 3 hours per week, lab, 2 hours per week; tutorial, 1 hour per week. Note: students with considerable prior programming experience in a high-level language such as Pascal, Modula-2, C or Ada may be granted exemption from this course at the discretion of the Chair. Completion of this course will replace previous assigned grade in COSC 1P01. COSC 1P03 Data Structures and Abstraction Programming and problem solving in a high-level programming language (normally Java). Data structures including arrays, strings and linked-lists. Modularity, abstraction and abstract data types including stacks, queues and lists. Introduction to searching and sorting, algorithm analysis and object-orientation. Lectures, 3 hours per week, lab, 2 hours per week; tutorial, 1 hour per week. Prerequisite: COSC 1P02(1P01) or permission of the Chair. Completion of this course will replace previous assigned grade in COSC 1P04. COSC 1P12 Computer Organization and Assembly Language Basic computer organization including functional units, instruction cycle, control, buses and memory. Assembly-level programming including machine representation, instruction sets and addressing modes. Role of assemblers, linkers and loaders. Lectures, 3 hours per week, lab 2 hours per week; tutorial, 1 hour per week. Prerequisite: COSC 1P03 (1P04). Note: COSC 1P03 may be taken concurrently. Completion of this course will replace previous assigned grade in COSC 2P12. COSC 1P90 Microcomputers and Applications Introduction to computers and the use of microcomputers in academia and industry for students with no computing experience. Various computer packages (such as word processing and presentation software) are presented, giving the student hands-on experience. Lectures, 2 hours per week, lab, 2 hours per week. Restriction: not open to COSC (single or combined), BCB or CSDT majors. COSC 1P93 Introduction to Computer Programming Modern software techniques: problem solving and design of effective algorithms; structured program design methodology; subprogram library usage; documentation; correctness; floating-point arithmetic; error analysis. Programming assignments are implemented in a high-level language (such as C or FORTRAN). Lectures, 3 hours per week, lab, 2 hours per week; tutorial, 1 hour per week. Restriction: not open to COSC (single or combined), BCB or CSDT majors. Prerequisite: OAC mathematics credit. COSC 1P98 Intermediate Computer Applications Contemporary computer software technology and applications. Important application areas in industry, science, education, and research. Labs give practical experience in applications such as spreadsheet, graphics and multimedia software. Lectures, 3 hours per week, lab, 2 hours per week. Restriction: not open to COSC (single or combined), BCB or CSDT majors. Prerequisite: previous computer experience (e.g., high school computer science, COSC 1P90 or extensive experience with microcomputers). COSC 1P99 Internet and Intranets Use of the Internet for research and for enterprise-wide computing. Topics include history and composition of the Internet; fundamental communication concepts; LANs and client-server; basic UNIX; security, privacy, viruses and network etiquette; electronic mail, World Wide Web, telnet, ftp; searching and evaluation techniques. Some prior computer experience is preferred. Lectures, 3 hours per week, lab, 2 hours per week. Restriction: not open to COSC (single or combined), BCB or CSDT majors. COSC 2N90 Internship Work placement of 8-16 months duration with an approved employer. Restriction: only open to students accepted into the Internship option. Note: interviews with employer and student and completion, by the student, of a work report. COSC 2P03 Advanced Data Structures Implementation and usage of data structures. Topics include trees, graphs, advanced list structures, sorting and searching, analysis of algorithms, program proofs. Lectures, 3 hours per week, lab, 2 hours per week; tutorial, 1 hour per week. Restriction: open to COSC (single or combined), BCB and CSDT majors. Prerequisites: COSC 1P03; MATH 1P66 and 1P67. COSC 2P13 Introduction to Operating Systems Operating systems from a user's viewpoint. Emphasis on the functionality of operating systems rather than their implementation. Topics include file, processor, I/O and memory management; concurrent processes; mainframe and microcomputer operating systems; UNIX. Lectures, 3 hours per week. Prerequisite: COSC 1P03 and 1P12. COSC 2P32 File and Database Systems File organizations and access methods, fundamental data base concepts: specification and design of databases and applications; various database models including the relational model; processing with SQL; database administration; security. Practical database experience (normally ORACLE). Lectures, 3 hours per week, lab 2 hours per week. Prerequisite: COSC 2P03. COSC 2P50 The Computing Professional Professional issues in computing including historic and social perspectives; legal issues, licensing and copyright; social and ethical issues; professional conduct; technical writing and presentations. Lectures, 3 hours per week, seminar, 2 hours per week. Prerequisite: COSC 1P03. Note: this course involves seminars and considerable written work. A good command of written and spoken English is required. COSC 2P89 Advanced Internet and Intranet Concepts and techniques required for building and maintaining advanced interactive Web sites. Topics include XML and SGML, database connectivity and forms handling, basic animation, graphics optimization for the Web, scripting, advanced searching, Web design for accessibility. Lectures, 3 hours per week, lab/seminar, 2 hours per week. Prerequisite: COSC 1P03. COSC 2P90 Programming Languages and Object-Orientation Fundamental concepts of programming languages including syntax, semantics, control, data types and abstraction. Programming paradigms including imperative, applicative, logic and object-oriented. Object-orientation including inheritance and polymorphism. Introduction to object modeling. Lectures, 3 hours per week, lab, 2 hours per week. Prerequisite: COSC 1P03. Completion of this course will replace previous assigned grade in COSC 2P91 and 2P92. COSC 2P91 Procedural Programming Programming in procedural languages including procedures and functions, data representation, control structures and program organization. Procedural languages such as Ada, C and COBOL Lectures, 3 hours per week, lab, 2 hours per week. Prerequisites: COSC 1P03, 1P12 and 2P03. Note: COSC 2P03 may be taken concurrently. COSC 2P93 Logic Programming Predicate logic, symbolic and declarative programming, resolution theorem proving, applications. Introduction to logic languages such as Prolog. Lectures, 3 hours per week. Prerequisites: COSC 2P03. COSC 3F00 Software Engineering Scientific principles and managerial skills required for the construction of reliable software. Attributes of large complex software systems and software process models for managing the phases of software development; software requirements: analysis, tools and document preparation; software specification methods, software design concepts and alternate methodologies such as prototyping and object-oriented paradigms; several software testing, verification and validation methods. Lectures, 3 hours per week, lab, 2 hours per week. Prerequisites: COSC 2P03 (minimum 60 percent) and 2P32 (minimum 60 percent). Note: this course requires considerable written work and presentations. A good command of written and spoken English is required. Completion of COSC 2P50 and concurrent registration in COSC 2P90 is recommended for this course. Major group project is required. COSC 3P01 Introduction to Data Communications and Networking Overview of data communications concepts including data encoding and transmission; error detection and correction; data link control and multiplexing; local and wide area network topologies; protocols and applications. Lectures, 3 hours per week. Prerequisites: COSC 1P12 (minimum 60 percent), 2P03 (minimum 60 percent); and MATH 1P67; MATH 1P01 or 1P97.
COSC 3P40 Advanced Object-Oriented Programming Advanced programming techniques such as graphical user interfaces, networking, parallelism, database connectivity, multi-tiered systems, client-server and e-commerce. Introduction to advanced Java APIs such as swing, net, threads, JDBC, CORBA and JSP. Lectures, 3 hours per week, lab, 2 hours per week. Prerequisites: COSC 2P03 and 2P90. COSC 3P71 Artificial Intelligence Topics include heuristic programming, analysis of solution space, searching, pattern recognition, machine learning, game playing, genetic algorithms and problem solving. Lectures, 3 hours per week. Prerequisite: COSC 2P03 (minimum 60 percent). Note: completion of COSC 2P93 is recommended before taking this course. COSC 3P92 Computer Architecture Variations in computer architectures including buses, internal and external memory, I/O and interfacing, computer arithmetic, instruction sets, RISCs, microprogrammed control, parallel organization. Lectures, 3 hours per week. Prerequisites: COSC 1P12 (minimum 60 percent) and 2P13 (minimum 60 percent). COSC 3P93 Parallel Computing Origins of parallelism, classification of designs, characterization of performance. Pipelined computers: selection and comparison, case studies. Processor arrays: switching networks, case studies. Parallel languages: general principles, parallel constructs, vectorizing compilers, issues of portability. Practical exposure to a parallel programming language and parallel computing hardware. Parallel algorithms: general principles, recurrences, parallel approach to data structures and computational structures. Future trends: technology, design limitations, future supercomputers. Lectures, 3 hours per week. Prerequisite: COSC 2P13 (minimum 60 percent). COSC 3P94 Design of User Interfaces Design of human/computer interfaces. Topics include human factors (design and support of systems for human use), command languages, grammars, menu and window systems, user documentation and on-line help systems. Lectures, 3 hours per week, lab/seminar, 2 hours per week. Prerequisite: COSC 2P50 (minimum 60 percent) . Completion of this course will replace previous assigned grade in COSC 3P04. COSC 3P98 Computer Graphics Topics in computer graphics including 2-D and 3-D graphics, curve and surface fitting, light and colour models, real time interfaces, animation and hardware issues (Knowledge of C assumed.). Lectures, 3 hours per week. Prerequisites: COSC 2P03 (minimum 60 percent) and MATH 1P12. Note: completion of COSC 2P91 is recommended before taking this course. COSC 3P99 Computing Project Half-year development project or directed reading essay under faculty supervision. Seminar, 2 hours per week. Restriction: open to COSC (single or combined), BCB and CSDT majors and permission of project co-ordinator. Prerequisite: COSC 2P03 (minimum 60 percent). Note: students may propose their own projects for departmental approval or may apply for a project proposed by a faculty member. Further information (including project guidelines and project list) is available on the department Web pages. COSC 3V90-3V99 Computing Topics I Selected topics in computer science. Restriction: open to COSC (single or combined), BCB and CSDT majors and permission of the Chair. COSC 3V95 2001-2002: Embedded Software Embedded software controls everything from home appliances and cars to systems for climate control and manufacturing. It runs in real-time, concurrently, sometimes over a network. Topics include requirements posed by embedded software; real-time programming languages and operating systems; development of embedded applications. (Knowledge of C assumed). Lectures, 3 hours per week, lab, 2 hoursper week Prerequisites: COSC 1P12 (minimum 60 percent) and 2P13 (minimum 60 percent). Note: completion of PHYS 1F90 and COSC 2P91 is recommended before taking this course. COSC 4F90 Computing Project Full-year project under the supervision of a faculty member. Seminar, 2 hours per week. Restriction: open to COSC (single or combined), BCB and CSDT majors with a minimum 75 percent major average and permission of project co-ordinator. Prerequisite: COSC 3F00 (minimum 60 percent). Note: students may propose their own projects for departmental approval or may apply for a project proposed by a faculty member. This course is strongly recommended for students considering graduate school. Students must consult with faculty at the end of year 3 regarding supervision of projects. Further information (including project guidelines and project list) is available on the department Web pages. COSC 4P03 Advanced Algorithms Classical and evolving problems and algorithms in Computer Science. Topics include classical design and analysis techniques, cryptography, combinatorics. Lectures, seminar, 3 hours per week. Prerequisite: COSC 2P03 (minimum 60 percent) and MATH 3F65. Note: MATH 3F65 may be taken concurrently. Completion of this course will replace previous assigned grade in COSC 4V92. COSC 4P13 Operating Systems: Design and Implementation Design and implementation of UNIX and other operating systems. Topics include process and thread management, interprocess communication, synchronization and scheduling, multiprocessing, device drivers, kernel memory management, distributed and advanced file systems and STREAMS (Knowledge of C assumed.). Lectures, 3 hours per week. Prerequisites: COSC 1P12 (minimum 60 percent), 2P13 (minimum 60 percent) and 2P91 (minimum 60 percent). COSC 4P14 Computer Networks Principles of computer network design, implementation and performance evaluation. Topics include principles of network protocol design and implementation, operating system and application programming interfaces, algorithms and issues in client and server software design, examples of Internet clients and servers, network security, management and performance evaluation (Knowledge of C assumed). Lectures, 3 hours per week. Prerequisites: COSC 2P13 (minimum 60 percent), 2P91 (minimum 60 percent), 3P01 (minimum 60 percent); MATH 1P98 or 3F65. COSC 4P75 Compiler Construction Topics include lexical, syntactic and semantic analysis of high-level languages; symbol table organization; code generation and optimization. Lectures, 3 hours per week. Prerequisites: COSC 1P12 (minimum 60 percent), 2P03 (minimum 60 percent) and 2P90 (minimum 60 percent). COSC 4P76 Machine Learning Fundamental machine learning techniques with emphasis on using these techniques to design and implement small practical learning systems. Topics include learning as a search, inductive bias, concept learning, computational learning, explanation-based learning and reinforcement learning. Lectures, seminar, 3 hours per week. Prerequisite: COSC 3P71 (minimum 60 percent). Completion of this course will replace previous assigned grade in COSC 4V91. COSC 4P77 Evolutionary Computation Topics include genetic algorithms, genetic programming, evolution strategies, comparison of natural and artificial evolution and applications in problem solving, engineering and design. A variety of applications will be developed. Lectures, seminar, 3 hours per week. Prerequisite: COSC 3P71 (minimum 60 percent). Completion of this course will replace previous assigned grade in COSC 4V93. COSC 4P78 Robotics Computer control aspects of robots focussing on behaviour-based robot control architectures. Topics include robot components and subsystems, sensors and perception, object location and manipulation, mobile robot navigation, task planning, control architectures, adaptive and social behaviour. Lectures, 3 hours per week, lab, 1 hour per week. Prerequisites: COSC 1P12 (minimum 60 percent), 2P90 (minimum 60 percent), 3P71 (minimum 60 percent) and MATH 1P12. Note: completion of PHYS 1F90 is recommended before taking this course. COSC 4P79 Expert Systems Development of expert systems. Topics include recognition of problems solvable by an expert system; knowledge engineering; languages for expert systems development. Students will experiment with expert system development using an expert system shell and expert system building tool. Lectures, 3 hours per week. Prerequisites: COSC 2P93 (minimum 60 percent) and 3P71 (minimum 60 percent). COSC 4V90-4V99 Computing Topics II Selected topics in computer science. Lectures, seminar, 3 hours per week. Restriction: open to COSC (single or combined), BCB and CSDT majors and permission of the Chair.