summary - department of computer science - …quigley/committees/prc/report/... · web view... with...

31
PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES Appendix B – Course Outlines Course outlines for new and modified courses are included in this section. They can also be downloaded individually from the web in Microsoft Word format at http://www.scs.ryerson.ca/~quigley/Committees/PRC/CourseOutlines/ . CPS109 --- Computer Science I CALENDAR DESCRIPTION Description: An introductory programming course designed to introduce fundamental Computer Science concepts such as abstraction, modeling and algorithm design. Emphasis is placed on producing correct software. This course uses Java as its programming language. Prerequisites: Precursors: Co-requisites: None None CPS1XX Format: 1 Semester, 3 lecture hours, 1 lab hours per week. SYLLABUS Lecture Topics 1. Introduction to computing --- 4 hours 2. Data manipulation --- 4 hours 3. Introduction to objects --- 4 hours 4. Control of execution (decisions) --- 4 hours 5. Control of execution (iteration) --- 4 hours 6. Methods --- 4 hours 7. Errors, exceptions and testing --- 3 hours 8. Arrays --- 3 hours 9. Algorithms --- 3 hour 10. Introduction to data structures --- 3 hours 11. Other topics as time permits or review --- 3 hours Lab Topics 1. Introduction skills required to interact with our system Page 49 of 77

Upload: letuyen

Post on 17-Jul-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Appendix B – Course OutlinesCourse outlines for new and modified courses are included in this section. They can also be downloaded individually from the web in Microsoft Word format at http://www.scs.ryerson.ca/~quigley/Committees/PRC/CourseOutlines/ .

CPS109 --- Computer Science ICALENDAR DESCRIPTIONDescription:An introductory programming course designed to introduce fundamental Computer Science concepts such as abstraction, modeling and algorithm design. Emphasis is placed on producing correct software. This course uses Java as its programming language.

Prerequisites: Precursors: Co-requisites:None None CPS1XX

Format: 1 Semester, 3 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture Topics 1. Introduction to computing --- 4 hours2. Data manipulation --- 4 hours3. Introduction to objects --- 4 hours4. Control of execution (decisions) --- 4 hours5. Control of execution (iteration) --- 4 hours6. Methods --- 4 hours7. Errors, exceptions and testing --- 3 hours8. Arrays --- 3 hours9. Algorithms --- 3 hour10. Introduction to data structures --- 3 hours11. Other topics as time permits or review --- 3 hours

Lab Topics1. Introduction skills required to interact with our system the activity of programming the architecture of computers using the compiler recognising syntax and logic errors working with simple objects writing algorithms in plain English2. Fundamental data types integer and floating-point numbers writing arithmetic expressions in Java

Page 49 of 77

Page 2: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

the importance of comments and good code layout defining and initialising variables and constants recognising the limitations of the int and double types reading user input and displaying program output changing the values of variables through assignment using the Java String class writing simple programs that read numbers and text, process input and display results3. Introduction to classes and objects implementing simple classes understanding methods and instance variables encapsulation object construction copying object references4. Decisions implementing simple decisions writing expressions with relational operators implementing repeated and nested branches using Boolean variables using Boolean operations5. Iteration loops as repeated decisions types of common code that can be treated iteratively loop conditions and termination programming loops and choosing between while, for and do/while statements using loops to process character, word and line input nested loops6. Methods tracing the flow of a method's execution method naming and commenting parameter passing determining the scope of variables using static methods decomposing complex tasks into simpler ones designing methods that solve practical problems programming recursive methods7. Arrays using arrays to collect objects passing arrays to functions common array algorithms building classes containing arrays using two-dimensional arrays8. Debugging designing stubs for testing components of your programs in isolation the principles of test case selection and evaluation using assertions to document program assumptions strategies for effective debugging

Page 50 of 77

Page 3: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

9. Algorithms bubble sort, linear and binary search algorithms algorithms for the same task that differ widely in performance big-Oh notation estimating and comparing the performance of algorithms10. Introduction to data structures -- linked lists creation of list elements insertion of list elements

FOR DEPARTMENTAL USE

Hardware/Software Support:H/W: Unix/NT workstationsS/W: Java compiler and/or IDE

ACM/IEEE CoverageDS2 Basic logic 1 core hours (of 10)PF1 Fundamental programming constructs 18 core hours (of 9)PF2 Algorithms and problem-solving 2 core hours (of 9)PF3 Fundamental data structures 3 core hours (of 14)PF4 Recursion 1 core hours (of 5)AL3 Fundamental computing algorithms 2 core hours (of 12)AR2 Machine level representation of data 1 core hours (of 3)AR3 Assembly level machine organization 1 core hours (of 9)OS1 Overview of operating systems 1 core hours (of 2)PL1 Overview of programming languages 1 core hours (of 2)PL2 Virtual machines 1 core hours (of 1)PL3 Introduction to language translation 1 core hours (of 2)PL4 Declarations and types 1 core hours (of 3)PL5 Abstraction mechanisms 1 core hours (of 3)PL6 Object-oriented programming 1 core hours (of 10)SP1 History of computing 1 core hours (of 1)SE1 Software design 1 core hours (of 8)SE6 Software validation 1 core hours (of 3)

CPS 1XX – Social and Professional Issues in Computer Science

ObjectivesStudents who complete CPS1XX should have a good understanding of the social and legal issues related to computer science. It is hoped that this will guide them when they have to make difficult decisions throughout their career. The CPS1XX labs will also introduce them to the systems they will use at Ryerson and some tools and techniques for software development. As part of this course’s

Page 51 of 77

Page 4: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

evaluation, students will have to write individual essays which will also be used to evaluate their English proficiency early in the program. Students who need remedial help will be directed to work with the Writing Center to improve their communication skills.

CALENDAR DESCRIPTION

Description:This course introduces students to the social and professional issues that arise in the context of computing. It also introduces them to some of the systems and tools they will use in their studies and professional practice.

Prerequisites: Precursors: Co-requisites:None None CPS109

Format: 1 Semester, 2 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture Topics

1. History of Computing – 1 hour Prehistory – the world before 1946 History of computer hardware, software, networking Pioneers of computing2. Social Context of Computing – 3 hours Social implications of computing and networked communication Growth of, control of, and access to the Internet Gender-related issues International issues3. Methods and Tools of Analysis – 2 hours Making and evaluating ethical arguments Identifying and evaluating ethical choices Understanding the social context of design Identifying assumptions and values4. Professional and Ethical Responsibilities – 3 hours Community values and the laws by which we live The nature of professionalism and the role of the professional in public policy Description and analysis of various forms of professional accreditation Maintaining awareness of consequences Codes of ethics, conduct, and practice including ethical dissent and whistle-blowing “Acceptable use” policies for computing in the workplace Harassment and discrimination5. Risks and Liabilities of Computer-Based Systems – 2 hours Historical examples of software risks Implications of software failure Risk assessment and management

Page 52 of 77

Page 5: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

6. Intellectual Property – 1 hour Foundations of intellectual property Copyright, patents, and trade secrets Software piracy Transnational issues concerning intellectual property7. Privacy and Civil Liberties – 1 hour Ethical and legal basis for privacy protection Privacy implications of massive database systems Technological strategies for privacy protection Freedom of expression in cyberspace International and intercultural implications8. If time permits: Computer Crime Economic Issues in Computing

Lab TopicsLabs 1 and 2: Introduction to Computing at Ryerson Introduction to computer hardware Ryerson’s and SCS’s system layout Logging into different systems using various methods Methods for remote access to other computers and file transfers Reading mail, news and web browsing Visit of the Ryerson Writing CenterLab 3: UNIX Editors Introduction to PICO, vi, emacsLabs 4 and 5: UNIX and NT File management Hierarchical file, directory and drive structures, filenames, absolute and relative paths SCS’ distributed file system NT file management utilities UNIX file commands and options NT file security and utilities UNIX file security, permissions and associated commandsLab 6: UNIX Commands Glob constructs, special characters and shell regular expressions I/O streams, devices (e.g. /dev/null), I/O redirection, filters and regular expressions (e.g. grep, find,

head, tail, cut, tr, sed), pipes, teeLab 7: UNIX Environment and Processes Processes, jobs, background/foreground, suspend, kill History editing Shell profile and rc files (e.g. .profile, .kshrc) Alias, shell environment (e.g., PATH, HOME)Other labs (order to be determined): Introduction to Web Development (1 lab) Symbolic Computation with MAPLE (1 lab) Spreadsheets (1 lab) Debugging techniques & tools (1 lab)

Page 53 of 77

Page 6: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Testing techniques (1 lab)

FOR DEPARTMENTAL USE

Hardware/Software Support:H/W: PC and UNIX Labs, PT classroom for at least one of the lecture hoursS/W: TBA

ACM/IEEE CoverageSP1 History of Computing 1 core hours (of 1)SP2 Social Context of Computing 3 core hours (of 3)SP3 Methods and Tools of Analysis 2 core hours (of 2)SP4 Professional and Ethical Responsibilities 3 core hours (of 3)SP5 Risk and Liabilities of Computer-Based Systems 2 core hours (of 2)SP6 Intellectual Property 1 core hours (of 3)SP7 Privacy and Civil Liberties 1 core hours (of 2)SE3 Software Tools and Environments 1 core hour (of 3)

CPS209 Computer Science II

OBJECTIVESThe objective of this course is to provide students with a solid foundation in computer programming using the object-oriented paradigm. The student is introduced to console applications, applets and graphical applications. Basic data structures (list, queue and stack) are introduced as abstract data types, and their implementation as arrays and linked structures is discussed. Throughout the course emphasis is placed on good programming style and documentation. The programming language for this course is Java.

CALENDAR DESCRIPTIONDescription:This course is a continuation of CPS 109. Whereas the emphasis in CPS 109 is on the procedural paradigm of programming, the emphasis in CPS 209 is on object-oriented programming and design principles. The course introduces inheritance, interfaces, applets, event handling, graphical user interfaces, basic algorithms and data structures (stacks, lists and queues). The Java programming language will be used.

Prerequisites: Precursors: Co-requisites:CPS 109 None None

Format: 1 Semester, 3 lecture hours, 1 lab hours per week.

SYLLABUS

Page 54 of 77

Page 7: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Lecture Topics 1. Introduction – 3 hours

Course overview Review of control structures, methods, primitive data types Arrays and vectors

2. Object-oriented Programming – 6 hours Classes and objects Encapsulation and information hiding Separation of behaviour and implementation Inheritance, class hierarchies, polymorphism Interfaces

3. Fundamental computing algorithms – 3 hours Sorting: selection sort, insertion sort, merge sort Searching: linear and binary search algorithms

4. Fundamentals of event-driven programming – 6 hours Events, event listeners, event sources Event adapters Frame windows, components and text input

5. Introduction to graphical user interfaces – 6 hours Layout management Buttons, menus, text components

6. Streams and exceptions – 6 hours Streams, readers and writers Reading and writing text files Introduction to exception handling Command line arguments

7. Introduction to data structures – 9 hours Linked data structures List, stack and queue abstract data types

Lab Topics1. Class and Object Hierarchies – A pencil and paper exercise to reinforce the concepts of class versus object and the ‘is a’ versus the ‘has a’ hierarchies.2. Applets – To write applets that display simple graphical shapes, text and color.3. Inheritance -- To become familiar with the object-oriented concept of inheritance using Java by designing and implementing a simple class hierarchy. 4. Interface -- To experiment with the comparable interface. 5. Event-driven programming -- To modify and write applets involving events, event listeners and event sources.6. Event-driven programming – To modify and write graphical programs involving events. 7. Common user interface components – To modify and write graphical programs involving menus, radio buttons, check boxes, and slide bars.8. File I/O – To write a program which reads and writes text files while handling exception and obtaining file names from command line arguments.9. Random access – To write a program which manipulates a file of employee records using random access

Page 55 of 77

Page 8: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

10. Linked list – A pen and paper exercise to reinforce the concept of a linked list and operations of insertion and deletion.11. Abstract data type – To write a class which implements the abstract data type set by using java.util.LinkedList .

FOR DEPARTMENTAL USEHardware/Software Support:H/W: UNIX/NT labsS/W: Java compiler or IDEACM/IEEE CoveragePF1 Fundamental programming constructs 3 core hours (of 9)PF2 Algorithms and problem-solving 3 core hours (of 9)PF3 Fundamental data structures 6 core hours (of 14)PF5 Event-driven programming 3 core hours (of 4)AL3 Fundamental computing algorithms 1 core hours (of 12)PL2 Virtual machines 1 core hours (of 1)PL5 Abstraction mechanisms 2 core hours (of 3)PL6 Object-oriented programming 7 core hours (of 10)HC1 Foundations of human-computer interaction 1 core hours (of 6)HC2 Building a simple graphical user interface 2 core hours (of 2)SE1 Software design 1 core hours (of 8)SE2 Using APIs 1 core hours (of 5)

CPS 3XX (formerly CPS611) – Object-Oriented Programming, Analysis & Design

Objectives

This course provides the student with an in-depth understanding of the concepts related to the Object-Oriented paradigm and an introduction to the development of software using the paradigm. The course follows up on the Object-Oriented paradigm introduction in CPS209 and, as described below, CPS3xx (CPS611) is essentially paired with the follow-up CPS405.The introductory material in the course is a review and extension of the CPS209 coverage, based on the second year students’ relative maturity which lends itself to an appreciation of the often subtle distinctions among the various features in an Object-Oriented exposition. For example, the same syntactical token, the variable, is used for class variables, instance variables, method variables, locally scoped block variables, and method parameters (the latter by value, by address, and by reference - a distinction not fully seen earlier in Java or C). The additional maturity further allows the complex notion of abstraction, first seen in CPS209, to be reinforced. This maturity also helps in the study of collection classes which have traditionally posed a problem for many students, as what would at first appear to be a clear separation between a collection object, its component

Page 56 of 77

Page 9: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

objects, and both of their instance variables has traditionally presented a marked comprehension problem. Likewise, the delicate distinction between typing and classes can also be explored.The short paradigm review is followed by a brief study of the pure Object-Oriented Smalltalk language to cleanly identify the features of the paradigm just discussed: abstraction, encapsulation, inheritance concepts, and especially the notion of message passing which historically has been frequently missed by the beginning student.A study of relationships between classes, between objects, and between classes and objects, is followed by an in-depth study of the Unified Modelling Language which captures these relationships in the context of a programming problem. A UML software tool is used in the major team-based course project which will extend into the follow-up course, CPS405. In this project, teams of four students will perform the initial Analysis and Design iterations of a programming problem presented as a detailed written problem statement. In the follow-up course, a completed set of Use Cases and UML drawings (the "almost right answer" to the CPS3xx project) will start the students off in the implementation (and re-iteration of Analysis and Design) of the project. In this way the students will use CPS3xx to become very familiar with the problem space, and CPS405 to complete the implementation of the problem.The CPS3xx (CPS611) course presents a relatively complete coverage of the C++ language (which will be used in CPS405 to implement the project). The course concludes with an introductory coverage of the sizeable topic of Design Patterns. Time permitting, the concept of Object Brokers may be introduced. CALENDAR DESCRIPTION

Description:Object-Oriented Programming, Analysis and Design. The course further explores the Object-Oriented paradigm emphasizing the Object Model and relationships between the various artefacts. The Unified Modelling Language to capture these relationships is studied in depth throughout the course. The pure Smalltalk language is briefly introduced to reinforce the OO paradigm. A major analysis and initial design project is done in teams using the UML to set the parameters for the problem space; this is used as a basis for the implementation-focused project in the follow-up CPS405 course. An essentially complete coverage of C++ is presented for use in the project. Design patterns are introduced and, time permitting, Object Brokers are also introduced.

Prerequisites: Precursors: Co-requisites:CPS209, CPS393 None None

Format: 1 Semester, 3 lecture hours, 0 lab hours per week (1 Lect. hr per week is used as a lab in weeks 3-6).

SYLLABUS

Lecture Topics

Page 57 of 77

Page 10: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

1. Object Oriented Concepts and Paradigm Review Paradigm Review The Object Model

Abstraction Classes, Objects, and Relationships

Typing vs. Classes UML Introduction

 2. Smalltalk

Smalltalk History, Environment Smalltalk Language Elements Smalltalk Basic Classes

Collection Classes Streams and File Streams

 3. Object-Oriented Analysis and Design

Major Methodologists, Contrasting A&D Approaches Historical Booch A&D Methodology Contemporary OO A&D

Rational Unified Process A&D Notation

The UML for A&D A Simplified Process

Project Introduction4. C++

"Non-Object-Oriented" C++ Extensions Comments Declaration Modifications Explicit Type Conversion Function Prototypes Function Name Overloading Default Parameters Unspecified Number Of/No Arguments Reference Parameters Inline Function Specifier New, Delete

"Object-Oriented" C++ Extensions Classes and Objects Private, Protected, Public This Static Members Program Organization Scope Constructors and Destructors Inheritance Polymorphism With Inheritance in C++

Page 58 of 77

Page 11: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Operator Overloading Friends Templates Stream I/O and Formatting Exception Handling

5. Patterns Patterns Rationale and History The GHJV SW Pattern Template The GHJV Pattern Catalog Sample Creational Patterns Sample Structural Patterns Sample Behavioural Patterns Patterns and Frameworks

6. Object Brokers Lab Topics1. Smalltalk exercises

FOR DEPARTMENTAL USE

Hardware/Software Support: H/W: NT lab S/W: Smalltalk, Rational Rose, C++

ACM/IEEE CoveragePF1 Fundamental programming constructs 4.6 core hours (of 9)PF3 Fundamental data structures 3.8 core hours (of 14)PL1 Overview of programming languages 0.4 core hours (of 2)PL4 Declarations and types 0.6 core hours (of 3)PL5 Abstraction mechanisms 0.4 core hours (of 3)PL6 Object-oriented programming 14.0 core hours (of 10)SE1 Software design 7.0 core hours (of 8)SE2 Using APIs 1.2 core hours (of 5)SE3 Software tools and environments 1.0 core hours (of 3)SE4 Software processes 0.4 core hours (of 2)SE5 Software requirements and specifications 0.8 core hours (of 4)SE6 Software validation 0.2 core hours (of 3)SE7 Software Evolution 0.6 core hours (of 3)SE8 Software Project Management 0.6 core hours (of 3)SP5 Risks and liabilities of computer-based systems 0.2 core hours (of 1)PL9 Type systems ElectiveHC4 Human-centered software development ElectiveHC6 Graphical user-interface programming ElectiveSP9 Economic issues in computing ElectiveSE9 Component-based computing Elective

Page 59 of 77

Page 12: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

SE10 Formal methods Elective

CPS 405 – Software EngineeringOBJECTIVESThis is primarily a first course in software engineering. The focus of the course is a major Object-Oriented programming project which is a continuation of the major project started in CPS3xx. Whereas in CPS3xx the students focus on the initial Analysis and Design phases thereby obtaining a solid view of the problem space, in CPS405 they are given the “almost right answer” to the Analysis and initial Design phase, consisting of a set of reasonably complete Use Cases and other UML artifacts as required; in teams of 4, they concentrate on the normal Object-Oriented iterations of this initial analysis and design while performing a complete development of the substantial application with the emphasis being on implementation and maintenance. The scheduled lab hours are devoted to the project, comprising tutorials, progress/activity monitoring, oral presentations and software demonstrations/evaluations.

The project, as much as possible, provides a simulation of an actual Object-Oriented software development scenario in industry. A “client” (ideally another faculty member or, failing that, the tutor) provides information about the desired system and essentially becomes a team member. A faculty “administrative manager” (the course professor) provides necessary information about further analysis and the design issues, monitors “personnel issues”, and provides some technical help to address implementation issues. Project evaluation is shared between the two advisors.

The lectures cover topics in Object-Oriented software engineering.

CALENDAR DESCRIPTION

Description:Software Engineering. Basics of software engineering, including a large team based development project continued from CPS3xx (CPS611).

Prerequisites: Precursors: Co-requisites:CPS 305, CPS3xx (CPS611) None None

Format: 1 Semester, 2 lecture hours, 2 lab hours per week.

SYLLABUS

Lecture Topics

1. Introduction Historical Development of the Software Engineering Discipline Object-Oriented Software Development Lifecycle Classical Software Development Lifecycle Overview Major Project Structure and Expectations

Page 60 of 77

Page 13: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Review of CPS3xx Project Initial Analysis and Design

2. Computer Assisted Software Engineering Definition Tools UML Based Analysis Capture Tools

3. Requirements Analysis and Specification System Overview Specification (Review) Functional and Non-Functional Requirements Analysis (Review)

Data Dictionary Object-Oriented Analysis and Design Methodology Overview (Review) Use Case Analysis (Review and Application)

Three Level Use Case Development Overview, Outline, Detail

Use Case Diagrams and System/Subsystem Packages 4. Initial Analysis and Design

Starting from Pre-Defined Project Use Case Initial Analysis Class and Object Identification with UML Diagrams (Review)

UML Static (Class and Object) Interaction Diagrams (Review and Application) Sequence Diagram and Class Diagram Interdependent Project Development

Collaboration Diagram Exposition UML Dynamic (Behaviour) Interaction Diagrams (Review and Application)

Statechart and Activity Diagram Project Development Impact on Initial Class and Sequence Diagrams

UML Component and Deployment Diagrams Component and Deployment Diagram Project Development

User Interface Considerations and Interface Types Selecting an appropriate interface

Additional Program Design Considerations Selecting Algorithms Documenting Algorithms Language Considerations

Design Pattern Project Development as Appropriate

5. Analysis and Design Iteration Iteration Process Methodology Milestones

6. Testing Definition of Testing Levels of Testing Black and White Box Testing Tools and Techniques for Testing

Page 61 of 77

Page 14: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

7. Extreme Programming Pair Programming Test Development

8. Introduction to External Data Structures and DBMS Flat file organization Hierarchical, Network, and Relational Systems Basic Operations on Relations Normalization

Lab Topics

Project Development

FOR DEPARTMENTAL USE

Hardware/Software Support:H/W: NT labS/W: Rational Rose, C++, MySQL

ACM/IEEE CoveragePF2 Algorithms and problem-solving 0.8 core hours (of 6)PL1 Overview of programming languages 0.2 core hours (of 21)PL5 Abstraction mechanisms 0.8 core hours (of 3)OS2 Operating system principles 0.2 core hours (of 2)HC1 Foundations of human-computer interaction 0.8 core hours (of 6)HC2 Building a simple graphical user interface 0.4 core hours (of 2)IM1 Information models and systems 1.8 core hours (of 3)IM2 Database systems 2.4 core hours (of 3)IM3 Database modeling 0.4 core hours (of 4)SE1 Software design 2.4 core hours (of 8)SE2 Using APIs 0.6 core hours (of 5)SE3 Software tools and environments 1.0 core hours (of 3)SE4 Software processes 0.8 core hours (of 2)SE5 Software requirements and specifications 4.0 core hours (of 4)SE6 Software validation 2.8 core hours (of 3)SE7 Software evolution 1.4 core hours (of 3)SE8 Software Project Management 3.4 core hours (of 3)OS8 File Systems ElectiveOS10 Fault tolerance ElectiveOS11 System performance evaluation ElectiveHC4 Human-centered software development ElectiveHC5 Graphical user-interface design ElectiveIM5 Database query languages ElectiveIM6 Relational database design ElectiveIM9 Physical database design [elective] Elective

Page 62 of 77

Page 15: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

SE9 Component-based computing ElectiveSE12 Specialized systems development Elective

CPS 4XX – Network-Centric ComputingObjectivesStudents who have completed this course will have a general understanding of issues surrounding telecommunications and networking. Particular attention will be paid to security issues and the World Wide Web. Students will also gain experience programming active web pages.

CALENDAR DESCRIPTION

Description:This course introduces students to issues surrounding telecommunications, and computer networking. Topics include: network architectures, communication protocols, networking layers, network security measures, cryptography, and the World Wide Web. Students will also learn how to develop active web pages.

Prerequisites: Precursors: Co-requisites:CPS209, CPS393, MTH210 None None

Format: 1 Semester, 2 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture Topics – will not necessarily be covered in this order1. Introduction to net-centric computing– 3 hours

Background and history of networking and the Internet Network architectures The range of specializations within net-centric computing

Networks and protocols Networked multimedia systems Distributed computing Mobile and wireless computing

2. Introduction to Data Communication – 3 hours Network standards and standardization bodies The ISO 7-layer reference model in general and its instantiation in TCP/IP Circuit switching and packet switching

3. Introduction to Networking – 9 hours Streams and datagrams Physical layer networking concepts (theoretical basis, transmission media,

standards) Data link layer concepts (framing, error control, flow control, protocols)

Page 63 of 77

Page 16: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Internetworking and routing (routing algorithms, internetworking, congestion control)

Transport layer services (connection establishment, performance issues)4. Introduction to Network security- 6 hours

Fundamentals of cryptography (review from MTH210) Secret-key algorithms (mono-alphabetic, poly-alphabetic ciphers) Public-key algorithms Authentication protocols Digital signatures

5. The web as an example of client-server computing – 9 hours Web protocols Client-server relationship Characteristics of web servers

Handling permissions File management Capabilities of common server architectures

Web technologies Server-side programs Common gateway interface (CGI) programs Client-side scripts The applet concept

Lab Topics – will not necessarily be covered in this orderLab 1 – Web Site Standardization:

Standardize the look of a given web site using server-side directives, cascading style sheets and frames.

Lab 2 – Browser ScriptingModify an interactive HTML form using Javascript

Lab 3 – Applets Write a Java Applet for a web page.

Lab 4 – Mono-Alphabetic Ciphers Write mono-alphabetic encryption and decryption routines

Lab 5 – Poly -Alphabetic Ciphers Write poly-alphabetic encryption and decryption routines with private keys

Lab 6 – PGP Generate and distribute a PGP key pair and use the PGP package to send an encrypted e-mail message

Lab 7 – CGI Scripting Write a small sh CGI script.

Lab 8 – Server Scripting Add PHP commands to a web page.

Lab 9 – Servlets Write a small Java servlet to process information collected in a web form.

Lab 10 – Cookies Use cookies to add a layer of security to a web site.

FOR DEPARTMENTAL USE

Page 64 of 77

Page 17: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Hardware/Software Support: H/W: Web server dedicated to CPS4XX. S/W: Perl, Java, PHP, latest version of Apache server, Netscape, Internet Explorer browsers

ACM/IEEE CoverageNC1 Introduction to Net-Centric Computing 3 core hours (of 2)NC2 Communication and Networking 12 core hours (of 7)NC3 Network security 9 core hours (of 3)NC4 The web as an example of client-server computing 15 core hours (of 3)

CPS 6XX – Theory of ParsingOBJECTIVES

It is expected that students who successfully complete this course will have a basic understanding of finite state automata, Turing machines and their applications to language translation and relationship to computability. These students will be able to write a very simple interpreter using tools such as YACC and LEX.

CALENDAR DESCRIPTION

Description:This course introduces students to scanning and parsing and the theory of computation that supports these activities. Topics include: regular expressions and languages, finite state automata, scanning, context-free languages, pushdown automata, parsing, Turing machines, computability, and NP-completeness.

Prerequisites: Precursors: Co-requisites:MTH210, CPS305 None None

Format: 1 Semester, 3 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture and Lab Topics1. Introduction – 3 hours

Translators, compilers, interpreters and their uses Structure of translators, compilers and interpreters Review of Cartesian product, Strings and sets of strings

2. Lexical analysis – 9 hours Regular Expressions and Regular Languages Deterministic and non-deterministic Finite State Automata (DFA and NDFA) Scanning

Page 65 of 77

Page 18: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Scanner generators: e.g. LEX3. Languages and grammars – 12 hours

Classes of grammars: regular, context-free, context-sensitive, LL, LR Associated languages Backus-Naur Form Chomsky Normal Form Derivations and parse trees Ambiguity, recursion, left-factoring

4. Syntactic analysis – 12 hours Deterministic and non-deterministic push-down automata Recursive descent parsing Shift-reduce parsing Parser generators: e.g. YACC

5. Introduction to Interpretation and Compilation – 4 hours Semantic actions

6. Computability – 8 hours Turing machines and their variants Non-deterministic Turing machines The Church-Turing thesis Uncomputable functions The halting problem

7. Complexity Classes – 4 hours The language classes P and NP NP-Completeness Reduction techniques Evidence for P NP

FOR DEPARTMENTAL USE

Hardware/Software Support: H/W: UNIX labs S/W: Yacc and Lex running on UNIX systems.

ACM/IEEE CoverageAL5 Basic Computability 6 core hours (of 6)AL6 The complexity classes P and NP ElectiveAL7 Automata Theory ElectivePL2 Virtual machines 1 core hours (of 1)PL3 Introduction to language translation 3 core hours (of 3)PL8 Language translation systems Elective

MTH 110 – Discrete Mathematics I

Page 66 of 77

Page 19: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Objectives

It is expected that students who successfully complete this course will have a basic understanding of logic and discrete mathematics and the ability to structure a proof or argument and to apply mathematical methods to solve programming problems. Students will also get an opportunity to improve their oral presentation skills during the labs, where they will be required to make oral presentations of mathematical material.

CALENDAR DESCRIPTION

Description:This course covers the fundamentals of discrete mathematics with a focus on proof methods. Topics include: naïve set theory, notation for modern algebra, propositional and predicate logic, relations, elementary number theory.

Prerequisites: Precursors: Co-requisites:None None None

Format: 1 Semester, 3 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture Topics 1. Propositional calculus – 12 hours

Statements and connectives Relationship between English statements and statement forms. Truth tables, tautologies, contradictions, Logically equivalent forms, De Morgan's Laws. Applications to circuit design. Logical implication, contrapositive, converse, inverse, if and only if. Arguments, valid conclusions. Bitwise arithmetic and applications to programming.

2. Predicate Calculus – 6 hours Quantifiers and English statements Manipulation of English statements and their equivalent symbolic form. Generalized De Morgan Laws Multiple quantifiers Counter-examples Necessary and sufficient conditions, domain changes Generalized arguments

3. Proof Techniques – 6 hours Axioms, theorems, lemmas and corollaries Proof structure Direct proofs: existential, by exhaustion, deduction, construction, counterexample Indirect proofs by contradiction, contraposition Common pitfalls and mistakes in proofs

Page 67 of 77

Page 20: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

4. Number Theory– 6 hours Number sets Primes and composites, divisibility Unique factorization theorem Div, mod, quotient-remainder theorem Gcd, Euclid's algorithm; rational numbers.

5. Set Theory – 5 hours Naïve set theory and Venn diagrams. Set inclusion and set identities. Empty set, disjointedness, partitions.

6. Relations – 5 hours Binary relations and directed graphs Reflexivity, symmetry, transitivity Equivalence relations, equivalence classes Antisymmetry; partial and total orders.

Lab Topics Mathematical problems related to the lectures.

FOR DEPARTMENTAL USE

Hardware/Software Support: H/W: None S/W: Access to the WWW

ACM/IEEE CoverageDS1 Functions, Relations and Sets (except for functions) 15 core hours (of 6)DS2 Basic Logic 18 core hours (of 10)DS3 Proof Techniques (except for induction) 10 core hours (of 12)

MTH 210 – Discrete Mathematics II

ObjectivesStudents will complete their acquisition of fundamental discrete mathematics concepts begun in Discrete Mathematics I. These basic skills are prerequisite to various later courses.

CALENDAR DESCRIPTION

Description:This course is a continuation of Discrete Mathematics I. Topics covered include: functions, graphs, induction, recursion, regular expressions, counting and finite fields with applications to cryptography.

Prerequisites: Precursors: Co-requisites:MTH110 None None

Page 68 of 77

Page 21: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Format: 1 Semester, 3 lecture hours, 1 lab hours per week.

SYLLABUS

Lecture Topics1. Functions – 6 hours

Definitions and notation Functions in computer science One-to-one, onto, and bijective functions Composition of functions Cardinality of sets, diagonalization Generalized pigeonhole principle

2. Graphs and Trees – 7 hours Introduction to graphs and digraphs terminology and special graphs Paths and circuits, Eulerian and Hamiltonian circuits Matrix representations of graphs Isomorphism of graphs

3. Recursion and Induction – 9 hours Weak and strong induction Recursive and iterative sequences Well ordering Solving recurrence relations Proving conjectured solutions using mathematical induction General recursive definitions

4. Regular Expressions – 3 hours Introduction to regular expressions

5. Counting – 7 hours Counting and probability Possibility trees Multiplication and addition rule Permutations and combinations Pascal's triangle The binomial theorem Generating functions

6. Finite Fields – 7 hours Simple group theory, Finite fields, Applications to cryptography (RSA)

Lab Topics Mathematical problems related to the lectures.

FOR DEPARTMENTAL USE

Page 69 of 77

Page 22: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Hardware/Software Support: H/W: None S/W: None

ACM/IEEE CoverageDS1 Functions, Relations, and Sets (Functions) 6 core hours (of 6)DS3 Proof Techniques (Induction) 5 core hours (of 12)DS4 Basics of Counting 7 core hours (of 5)DS5 Graphs and Trees 7 core hours (of 4)NC3 Network Security 1 core hours (of 3)

MTH 716 – Design and Codes

Teaching Modes Three hours classroom lecture, one hour lab.

Objectives Students will learn the basics of design theory, with particular emphasis on error correcting and detecting codes. Such codes are widely used in network communications. The student will also be exposed to other applications of design such as scheduling and routing problems.

Course Evaluation

Term test 30%Labs 20%Final exam 50%

Course Outline

Introduction to codes Hamming distance, minimum distance. Error correction and detection. Perfect codes. Dual codes.

Finite geometries Linear codes.

Designs Latin squares and Transversal Designs. Shannon's Theorem. Authentication codes. Threshold schemes. One time pad.

Block designs Designs from geometries. Triple systems. Block designs and their codes. Scheduling problems.

Codes Assumus Mattson Theorem. Hamming designs/codes. Reed Muller codes. Golay codes. Codes from triple systems.

Prerequisites: MTH 210 (Discrete Mathematics II)

Recommended Texts

Page 70 of 77

Page 23: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

Designs, Graphs, Codes and Their Links, J.H. Van Lint, Peter J. Cameron, London Mathematical Society Student Texts, No 22, 1992. Design Theory, Charles C. Lindner, Christopher A. Rodger CRC Press (Series on Discrete Mathematics and Its Applications), 1997. Designs and Their Codes, E. F. Assmus, J. D. Key, Cambridge, 1992

MTH 816 – Cryptography

Teaching Modes Three hours classroom lecture, one hour lab.

Objectives Students will learn the basic cryptographic schemes used in industry and the mathematics behind them. Students will become familiar with both public and private key schemes. The main uses: authentication, validation and encryption will be understood. System vulnerabilities will also be considered.

Course Evaluation

Projects 80%Labs 20%

Course Outline

This course will consider the mathematics of modern cryptographic schemes, including commonly used public and private key systems. System vulnerabilities will also be considered.

Introduction Introduction to Ciphers. Authentication, validation and encryption. Public vs. private keys. Finite fields. Properties of a good cipher.

Simple Ciphers ROT n, Matrix schemes. Probabilistic attacks, brute force.

Authentication and Validation MD5, Digital Signatures, integrity checks, hash functions.

Private key encryption Block ciphers, 3DES, IDEA, AES (Rijndael)

Public key encryption RSA, Rabin-Williams, Integer Factorization problem (IFP). DSA, Diffie, Hellman, Discrete logarithm problem (DFP). ECC, Elliptic Curves, Elliptic curve discrete logarithm problem (ECDLP) (if time permits).

Prerequisites: MTH 210 (Discrete Mathematics II).

Recommended Texts

Cryptography: Theory and Practice, Douglas R. Stinson. CRC Press, 1995. Handbook of Applied Cryptography, Alfred J. Menezes, Paul C. Van Oorschot, Scott A. Vanstone.

Page 71 of 77

Page 24: SUMMARY - Department of Computer Science - …quigley/Committees/PRC/Report/... · Web view... with an in-depth understanding of the concepts related to the Object-Oriented paradigm

PROPOSAL FOR CSCI PROGRAM CURRICULUM CHANGES

CRC Press, 1996. Applied Cryptography: Protocols, Algorithms, and Source Code in C, 2nd Edition, Bruce Schneier. John Wiley & Sons, 1995

Page 72 of 77