Skip to main content

Computer Science - Junior

Course # COMP 3023

Credits 6

Prerequisites: Computer Architecture, Data Structures and Algorithms.

Course Description 

The significant issues with operating system implementation and design are examined in this course. An established, practical, and effective interface between user programs and the computer's basic hardware is provided by the operating system. The course begins with a brief historical overview of how operating systems have changed over the past 50 years before moving on to discussing the main parts of most operating systems. The trade-offs that can be made between performance and functionality during the design and implementation of an operating system will be covered in this talk. Process management (processes, threads, CPU scheduling, synchronization, and deadlock), memory management (segmentation, paging, and swapping), and file systems will receive special attention. 

Course Learning Outcomes  

Upon the completion of this course, students should be able to:  

  • Explain operating system structure, components, and concepts in relation to the services that the systems provide and the implementation trade-offs.
  • Detect the different states that a task may pass through and the data structures and operations (such as context switching and dispatching) needed, task working in multiprogramming or timesharing environment, identifying the notion of a thread and issues related to multithreaded programming.
  • Apply scheduling algorithms, deadlocks, and the methods of handling deadlocks.
  • Explain various ways of memory organization and analyze memory-management techniques, features, and limitations.
  • Explain the file concept, function of file systems, file operations, directory structures, physical structure of mass-storage devices, analyze mass-storage management algorithms and services provided to mass storage.
  • Explain the operating system’s I/O subsystem, principles of I/O hardware and provide performance aspects of I/O hardware and software.

Course Assessments and Grading

Item 

Weight 

Quizzes 

25% 

Midterm 

25% 

Homework

20% 

Final exam

30% 

Course # DMNS 3032E

Credits 6

Prerequisites: Introduction to Probability and Statistics; Calculus-I, II 

Course Description 

This course, Advanced Statistics, introduces advanced topics in statistics for computer science majors. This course teaches essential background and techniques for understanding advanced statistical methods, enabling students to perform data analysis and evaluate research. The course starts with a review of introductory statistics and probability, then covers topics such as sampling distributions, point estimation, inference, ANOVA, and an introduction to machine learning. Python and/or R programming package will be used to enhance understanding and application of statistical techniques taught throughout the course. 

Learning Outcomes 

Upon completion of the course, students should be able to:  

  • Define sampling distribution and its properties.
  • Test statistical hypotheses and determine significance.
  • Analyze data using programming language and interpret results.
  • Select appropriate statistical models and justify choice.
  • Regress data using programming language and interpret results.
  • Predict and draw conclusions using linear and multiple regression.
  • Analyze data using programming packages.

Course Assessments and Grading 

Item 

Weight 

Homework 

 10% 

Project 

15% 

Quizzes 

20% 

Class Participation 

5% 

Midterm Exam 

20% 

Final exam  

30% 

Course # DMNS 3034E

Credits 6

Prerequisites: Introduction to Probability & Statistics

Course Description 

This course is an introduction to data visualization for computer science, and communication & media majors. This course introduces various data visualization techniques using Python. It starts with an overview of what data visualization is and why it is important, covering basic Python for visualization, data cleaning, Pandas for manipulation, and exploratory data analysis. This course will delve into a variety of plotting methods, interactive visualizations utilizing Python libraries, multi-dimensional data representation, geographic data visualization, time series visualization, advanced statistical methods, and the creation of dashboards. The course aims to equip students with a strong skill set in Python-based data visualization to effectively communicate complex insights from data. 

Learning Outcomes 

Upon completion of the course , students should be able to:  

  • Describe the importance and applications of data visualization in various fields.
  • Employ basic Python skills for data visualization, including data types and structures.
  • Apply data cleaning techniques, preprocessing, and transformation using Python, with a focus on Pandas for data manipulation.
  • Perform exploratory data analysis, visually explore datasets, and generate insights through case studies.
  • Implement fundamental plotting methods such as bar charts, histograms, scatter plots, line charts, box plots, violin plots, heatmaps using Matplotlib and Seaborn.
  • Comprehend the basics of geospatial data, explore GeoPandas, and create basic to advanced geographic visualizations.
  • Define time-series data, employ basic and advanced time series visualization techniques, and analyze trends and seasonality.
  • Conduct correlation analysis, and regression analysis, visualizing residuals and model diagnostics.
  • Build basic interactive dashboards and explore advanced dashboard features and layouts.
  • Employ narrative techniques in visualization, showcase case studies of effective data storytelling.

Course Assessments and Grading 

Item 

Weight 

Biweekly Projects/Presentations 

 20% 

Midterm Exam or Project/Presentation 

20% 

Class Participation and Discussions 

15% 

Final Project 

30% 

Quizzes  

15% 

Course # COMP 3052

Credits 6

Course Description 

Software development is not just about coding, it also involves the application of scientific knowledge and well-defined engineering techniques to produce maintainable, scalable, cost-effective, and on-schedule software products. This specialization covers software engineering methodologies, techniques, and tools for planning, capturing requirements, designing, implementing, testing, and maintaining large-scale software systems. It combines scientific and technological knowledge with many hands-on examples and real-life case studies for students to apply software engineering skills in a realistic development environment. This specialization is intended for programmers who want to deepen their understanding of the methodologies and techniques involved in software development. Basic object-oriented programming (OOP) concepts are required to attempt the series of courses. It is recommended to take the courses in the order they are listed, as they progressively develop techniques and concepts about software engineering, it is not a hard requirement. 

Course Learning Outcomes  

Upon completion of this course, students will be able to: 

  • Apply software engineering methodologies.
  • Utilize engineering techniques.
  • Plan and capture requirements.
  • Design large-scale software systems.
  • Implement software solutions.
  • Conduct comprehensive testing.
  • Apply real-life case studies.
  • Deepen Understanding of Software Development.

Course Assessments and Grading 

Item

Weight

Mid Term exam 

15 %

Final exam 

20 %

Quizzes 

20 %

Problem Sets 

20 %

Reading Overview Quiz 

5 %

Project 

20 %

 

Course # COMP 3073

Credits 6

Prerequisites: Artificial Intelligence, Statistics I

Course Description  

According to Tom Mitchell “The field of Machine Learning is concerned with the question of how to construct computer programs that automatically improve with experience”. This course covers the basic concepts and techniques of Machine Learning from both theoretical and practical perspective. The material includes classical machine learning approaches such as Linear Regression and Decision Trees, more advanced approaches as recurrent neural network and convolution neural network, etc. The course explains how to build systems that learn and adapt using examples from real-world applications. 

Course Learning Outcomes  

Upon completion of the course, the students should be able to: 

  • Explain different machine learning techniques and select appropriate learning techniques to solve a problem. 
  • Examine the computation complexity of different machine learning algorithms. 
  • Analyze machine learning algorithms using different performance evaluation metrices. 
  • Apply machine learning algorithms to real-world problems. 
  • Implement machine learning algorithms using computer programing languages.

Course Assessments and Grading

Item 

Weight 

Attendance & Activities 

10% 

Assignments/Presentations (10 assignments) 

20% 

Quizzes (5 quizzes) 

15% 

Midterm exam (Paper Exam + Project) 

25% 

Final exam (Paper Exam + Project) 

30% 

Course # HUSS 3061

Credits 6

Course Description 

The course introduces you to the expectations and culture of computer science (CS) research and academic writing practice. It aims to support your progress from developing to competent writers through the analysis and practice of models of discipline-specific academic forms of communication and writing mainly through classroom activities and tasks. The course builds your knowledge and skills of research methods to enable you to write your undergraduate senior year research project/thesis in accordance with the standards and expectations set by the CS department and the university. 

Course Learning Outcomes

Upon completion of the course, the students should be able to: 

  • Identify the structures and functions of CS academic writing in senior year research project context.
  • Employ critical reading strategies to evaluate the scholarly value of a discipline-related academic text for use in your research project.
  • Synthesize information, evidence, and author’s position from discipline-related academic texts to shape, support and locate your own position.
  • Identify various stages and phases of the research process as they apply to your final year research project.
  • Demonstrate the ability to choose an appropriate research method for your final year research project.
  • Demonstrate a capacity to produce a Senior-year research report/thesis in a style and genre comparable to the standards of the computer scientists’ community within and beyond the university.
  • Demonstrate a capacity to follow ethics while engaging in intellectual, academic and research pursuits.

Course Assessments and Grading 

Item

Weight 

A critical review of one research papers  

30% 

Research Methodology Case Analysis Group Presentation  

20% 

A critical evaluation of a research report 

30% 

Knowledge and skills check quizzes (a maximum of 10) 

15% 

Attendance/Classroom participation 

05%