Education
This page contains information about my education and the courses I have taken. If you have any questions please feel free to contact me.
Bachelor of Science
Applied Computer Science
I graduated from the University of Winnipeg with a Bachelor of Science in Applied Computer Science. The program provided me with a strong foundation in computer science and software development.
The Applied Computer Science major is designed to prepare students in the following core areas: Programming Fundamentals (object-oriented, event driven, algorithms), Information Management (database systems, data modeling, data warehousing, relational databases, query languages), Software Engineering (software requirements and design, software process, software project management), Operating Systems, Net-Centric Computing (Internet programming, networks, security), Human Computer Interaction (GUI Design and Programming), Intelligent Systems (Machine Learning). Our team-oriented courses are meant to strengthen communication skills, experience group dynamics, and foster self-confidence. The 4-year major includes the development of a team-based software project for a local IT organization. Our program will help develop analytical thinking and applied skills by blending theoretical and practical aspects of computer science. The Applied Computer Science major is designed to provide an excellent basis for graduate studies in either computer science or applied computing.1
Courses
These are some of the relevant courses I have taken during my studies at the University of Winnipeg.
Scientific Computing with Python
ACS-2112
This Python language course shows students how to create basic programming structures in Python including decisions, loops and more advanced topics such as object-oriented programming with classes and exceptions. Unique Python data structures such as tuples and dictionaries are introduced. Students learn how to create Python programs with graphic elements as well as data visualization and publication quality figures. Applications from a variety of scientific fields are discussed when appropriate.
Unix
ACS-2941
This course provides students with advanced concepts and knowledge of Unix, one of the most widely used operating systems. The course introduces students to such topics as shells, filters and pipelines, the Unix file system, processes and job control, and Internet communications. Emphasis is placed on Unix shell programming, which provides valuable tools for developing powerful applications with a minimal amount of written code.
Advanced Internet Programming
ACS-3909
This course provides students with a thorough knowledge of server-side web programming. Topics include n-tiered systems, session tracking, interfaces and stereotypes, dynamic web page design, database connections, and XML processing. Students gain considerable knowledge and experience by learning important features needed for e-commerce, applying advanced web application techniques, and utilizing web databases.
Software Design and Architecture
ACS-3913
This is an advanced course in software design that examines recent advances in the design of larger application systems. Topics include software architecture, object-oriented analysis and design, software patterns, and the Unified Modeling Language (UML)
Introduction to Game Development
ACS-3922
This course is an introduction to game design and development, with a focus on the development of 2D and 3D interactive video games. Topics include the iterative process of game design: analysis, design, prototyping, development, and playtesting; game architecture and mechanics, working with art assets (sprites, textures and models), animation, collision detection, basic artificial intelligence, game management, game user interface, development and deployment for different platforms. Through the exploration of classic video game designs and the use of industry-standard game development tools, students gain hands-on practical experience and a thorough understanding of the basics of game design and development.
Data Structures and Algorithms
ACS-2947
This course introduces fundamental data structures using an object-oriented programming language. Topics to be covered include vectors, multidimensional arrays, linked lists, stacks, queues, trees, graphs, recursion and algorithms
Database Systems
ACS-3902
This course introduces the theory of relational, network, and hierarchical models. It covers in detail the techniques utilized in various stages of a relational database software development life cycle. These techniques include ERDs, relational models, functional dependencies, normalization, and physical data storage mechanisms. Query language fundamentals including relational algebra and SQL are also covered. A project involving the design and implementation of a database is required.
Programming Fundamentals II
ACS-1904
This course examines more advanced programming concepts using an object-oriented programming language. Topics to be covered include inheritance, polymorphism, sorting techniques, string processing, interfaces, files and packages.
Applications of Database Systems
ACS-2814
This course introduces students with limited computing experience to the principles of data management. The emphasis is on practical database experience reinforced through assignments and weekly laboratory work. Students learn first to work with a workstation-based database system and subsequently they are introduced to the design of databases and their implementation in relational systems. Topics include tables, queries, forms, reports, importing and exporting data, structured query language, entity relationship models, the relational data model, and normalization of databases. Examples, assignments, and laboratory work are drawn from a variety of different disciplines.
Internet Programming
ACS-2909
This course provides students with an overview of Internet and World Wide Web programming, development tools, resources, utilities, multimedia, and security issues. Students will gain hands-on experience in a scripting language such as JavaScript, Rich Internet Applications (RIAs), Web Services, and Mobile Application Development.
Software Requirements Analysis and Design
ACS-2913
This course introduces students to the requirements definition phase of software development. It provides coverage of both traditional and object-oriented approaches to requirements analysis and design of software used in business, real-time and embedded applications. Models, notations and processes for requirements elicitation, representation, and design are discussed.
Business Application Systems
ACS-2916
This course firstly presents structured models for business processes and data needed in common transaction processing systems such as order entry, invoicing, accounts receivable and payable, purchasing, inventory and general ledger. Also, system support for manufacturing (e.g., supply chain management, robotics), for marketing (e.g., sales force automation, customer relationship management), and for human resource management (e.g., candidate selection, collective bargaining support) is highlighted, and inter-system interfaces are considered. Large, organization-wide, integrated enterprise resource planning (ERP) systems are discussed in the context of a business case. System controls and security issues are outlined for the systems studied.
Introduction to Information Systems
ACS-1803
This course examines applications of information technology to businesses and other organizations. After an introduction to computers and data management, the course outlines various categories of information systems, (e.g., systems for transaction processing, managerial reporting, customer relationship management, decision support, enterprise resource planning, and e-commerce), with examples from current practice. System development, system security, systems consulting, and IT administration are also discussed. Focus is mostly on functional aspects of systems providing a valuable background for students in applied computer science, business and administration, and other disciplines.
Introduction to Programming
ACS-1805
This course covers elementary procedural programming concepts. Topics include: primitive data types and their manipulation, basic input and output and elementary control structures. In addition, topics related to a specific programming paradigm that is chosen for the course is covered. Students will gain hands-on programming experience in the laboratory component of the course.
Website Design and Development
ACS-1809
This course introduces students to the concepts, programming skills, and tools related to website design and development. The topics include: website layout; creating tables, frames, menus and forms; presenting multimedia on web pages; and Internet Protocols such as HTTP and FTP. Students gain hands-on programming experience in designing websites using HTML and Cascading Style Sheets.
Programming Fundamentals I
ACS-1903
This course introduces fundamental programming concepts using an object-oriented programming language. Topics to be covered include primitive data types and their manipulation, control structures, classes, objects and arrays.