Courses Taught 2017-2018 (current academic year)

CS1026a – Computer Science Fundamentals I

Course Description

This course provides an introduction to the basic concepts of computer programming and program design. It is intended for students in the Faculty of Science and those who intend to study Computer Science in senior years. Programming skills will be developed using the Python programming language. Course topics include primitive types, variables, decisions, looping, modularity, functions, lists, sets, dictionaries, objects, object oriented design, classes, and problem solving techniques.

 

The current course outline is available here.

Prerequisites

There are no prerequisites to CS1026. However, programming experience is an asset. If you feel you have significant programming experience you may consider taking CS1025 instead of CS1026.

Required Textbook:

Python for Everyone

C. Horstmann and R. D. Necaise (2nd edition)

John Wiley and Sons, 2014

 

Courses Taught 2016-2017

CS1026a – Computer Science Fundamentals I

Course Description

This course provides an introduction to the basic concepts of computer programming and program design. It is intended for students in the Faculty of Science and those who intend to study Computer Science in senior years. Programming skills will be developed using the Python programming language. Course topics include primitive types, variables, decisions, looping, modularity, functions, lists, sets, dictionaries, objects, object oriented design, classes, and problem solving techniques.

Prerequisites

There are no prerequisites to CS1026. However, programming experience is an asset. If you feel you have significant programming experience you may consider taking CS1025 instead of CS1026.

Required Textbook:

Python for Everyone

C. Horstmann and R. D. Necaise (2nd edition)

John Wiley and Sons, 2014

 

Courses Taught 2015-2016

CS1026a – Computer Science Fundamentals I

Course Description

This course provides an introduction to the basic concepts of computer programming and program design. It is intended for students in the Faculty of Science and those who intend to study Computer Science in senior years. Programming skills will be developed using the Python programming language. Course topics include primitive types, variables, decisions, looping, modularity, functions, lists, sets, dictionaries, objects, object oriented design, classes, and problem solving techniques.

Prerequisites

There are no prerequisites to CS1026. However, programming experience is an asset. If you feel you have significant programming experience you may consider taking CS1025 instead of CS1026.

Required Textbook:

Python for Everyone

C. Horstmann and R. D. Necaise

John Wiley and Sons, 2014

 

CS4435a – Cognitive Computing (with M. Daley)

Course Description

This course focuses on Cognitive Computing based on IBM’s Watson technology.  Students will learn about cognitive computing by doing it.  Students will work in teams and each team will pick a domain in which to build a cognitive question answering system, powered by IBM's Watson technology.  Each team will implement it on a full strength Watson instance. The course will culminate with a demo of each application and the presentation a full business plan for bringing what you've built to market.  Students will be exposed to topics covering: Cognitive computing and Watson, Natural Language Processing, Machine Learning, Information Retrieval, Knowledge Representation and Reasoning, Question Answering, Corpus analysis, Corpus Building, Content Theory, Training and test theory, Mobile app prototyping, Business planning.

The course will, in part, be operating on the “flipped classroom” model.  Students will be assigned readings and videos to view outside of class and we will use the contact hours in class for discussions, presentations and interaction.  Student marks will come from applying what is learned in class in a progressive series of checkpoints leading to a fully-trained Watson instance and, if desired, a mobile app with which to access that instance.

 

Prerequisites

There are no prerequisites except for permission of the instructor.

Required Textbook:

There is no required textbook for this course. Course notes, readings and pointers to other

texts will be posted on the course website

 

 

Some Previous Undergraduate Courses Taught

 

CS4457b – Computer Networks II: Advanced Communications

Course Description

The purpose of this course is to introduce the student to more advanced topics in network communications.   Topics may be extensions of those covered in the basic network course, but may also include a range of diverse topics in communications as well as emerging topics.  Topics in the current year will include wireless communications, quality of service in network communications, security and network management.  The student will be introduced to protocols, standards, and techniques in these areas.

Prerequisites

·         CS 3357 or equivalent,

·         Permission of the Instructor,

·         Knowledge of Java, C, C++.

Required Textbook:

Computer Networking: A Top-Down Approach, 5/E       
James F. Kurose
Keith W. Ross

Publisher: Addison-Wesley
Format: Cloth; 862 pp
Published: 2010

ISBN-10: 0321497708
ISBN-13: 9780321497703

This textbook is required for this course andis available for purchase from the University Bookstore on campus.

 

Beginning J2ME Platform: From Novice to Professional
Jonathan Knudsen

Sing Li

Publisher: Springer/An Apress Book
Format: Softcover
Published: 3rd ed. 2005. Corr. 2nd printing, 2007

ISBN-13: 978-1-59059-479-7

 

Some Previous Graduate Courses Taught

CS 9612 -- Computer Systems Performance Analysis

Course Description

The purpose of this course is to introduce the student to the principles and techniques of performance measurement in the analysis of computer systems.  Such techniques are used to detect bottlenecks, measure the efficiency of computer systems and applications.  The student will be introduced to performance measurement techniques, basic principles of queuing theory, experimental design, among others.

 

The student will be expected to do individual assignments and to participate in a project.  Assignments are to be done individually.  The project will likely be done individually, though depending on the class enrolment, might be done in small groups.  The project will involve the design of an experiment to assess performance aspects of some component of a system or application that the student will choose – this will be based on each student’s interest and current research directions.  The project will include the definition and execution of experiments, the collection of data and the analysis of the data once collected.

 

The course will consist of both lectures and class discussions on the project.  Once projects are underway, each individual may be asked for brief updates.  Each student will provide a final presentation and report.

Prerequisites

·         Permission of the Instructor,

·         CS 305 or equivalent,

·         Knowledge of C, C++ or Java

·         The ability to work in a team environment.

Recommended Textbook:

The Art of Computer Systems Performance Analysis,

Raj Jain,

John Wiley and Sons, Inc.

 

CS 9626 – Medical Informatics

Course Description

Medical informatics, health informatics, or Health care informatics is the intersection of information science, computer science, mathematics, medicine and health care. It deals with the resources, devices, and methods required to optimize the acquisition, storage, retrieval, and use of information in health and biomedicine.  Medical informatics tools include not only computers but also clinical guidelines, formal medical terminologies, statistical methods and information and communication systems. It is applied to the areas of nursing, clinical care, dentistry, pharmacy, public health and (bio)medical research.

 

Aspects of the field cover many dimensions, including, but not restricted to:

-       Architectures for electronic medical records and other health information systems used for billing, scheduling, and research;

-       Decision support systems in healthcare, including clinical decision support systems;

-       Standards (e.g. DICOM, HL7) and integration profiles (e.g. Integrating the Healthcare Enterprise) to facilitate the exchange of information between

-       healthcare information systems - these specifically define the means to exchange data, not the content;

-       Medical vocabularies, such as the Systematized Nomenclature of Medicine, Clinical Terms (SNOMED CT), MEDCIN, Logical Observation Identifiers Names and Codes (LOINC), OpenGALEN Common Reference Model or the highly complex UMLS - used to allow a standard, accurate exchange of data content between systems and providers;

-       Use of hand-held or portable devices to assist providers with data entry/retrieval or medical decision-making;

-       Development of analytical, computational or mathematical models for predicting health care outcomes or effective approaches in treatment

 

Course Objectives: The area of medical informatics is broad, touching on many disciplines, and a detailed investigation of all is beyond the scope of a single course. The objectives of this course are fourfold:

-       To provide the student with the background necessary to participate in a multidisciplinary medical informatics research team;

-       To expose the student to the basic concepts and methodologies relevant to medical informatics;

-       To highlight some aspects of the nature of research within the area and some of the challenges and research questions;

-       To identify some of the future areas for informatics research.

 

Prerequisites

·         Permission of the Instructor

·         Knowledge of a programming language

·         Familiarity with basic statistics

 

Recommended Textbook:

Biomedical Informatics: Computer Applications in

Health Care and Biomedicine

Edward H. Shortliffe

James J. Cimino

Publisher: Springer Verlag

ISBN: 0387289860

Format: Cloth; 1037 pp

Published: 2006