Ashesi's core curriculum consists of an interdisciplinary liberal arts program that includes courses in the humanities and social sciences, as well as mathematics and preparatory business and computer science courses.
- Artificial Intelligence
- Machine Learning
- Robotics
- Data Structures and Algorithms
- Computer Graphics
- Thesis
- Applied Project
- Algorithm Design and Analysis
- Advanced Database Systems
- Database Systems
- Introduction to Computing & Information Systems
- Web Technologies
- Computer Programming for Computer Science
- Computer Programming for Engineering
- Software Engineering
- Human Computer Interaction
- E-Commerce
- Mobile Application Development
- Computer Networks and Data Communications
- Intermediate Computer Programming
- Discrete Theory and Structures
- Computer Organization and Architecture
- Intermediate Computer Programming
- Networks & Distributed Computing
- Operating Systems
- Data Structures & Algorithms
- Data Mining
Artificial Intelligence
Artificial intelligence (AI) is the study of solutions for problems that are difficult or impractical to solve with traditional methods. It is used pervasively in support of everyday applications such as email, word-processing and search, as well as in the design and analysis of autonomous agents that perceive their environment and interact rationally with the environment. The solutions rely on a broad set of general and specialized knowledge representation schemes, problem solving mechanisms and learning techniques. The study of Artificial Intelligence prepares the student to determine when an AI approach is appropriate for a given problem, identify the appropriate representation and reasoning mechanism, and implement and evaluate it.
Objectives:
To be able to differentiate between the concepts of optimal reasoning/behavior and human-like reasoning/behavior. To be able to apply resolution to a set of logic statements to answer a query. For a given problem, to be able to formulate an efficient problem space and apply a suitable search technique to solve it, selecting from basic search techniques such as depth-first search, advanced techniques such as A* search and minimax search. To be able to design and implement at least one knowledge representation for reasoning under uncertainty. To be able to Identify techniques for information retrieval, language translation, and text classification.
Topics:
Introduction to AI, problem characteristics, and the nature of agents; Basic search: problem spaces, factored representation, uninformed search, heuristics and informed search, time and space complexity of search, two-player games, constraint satisfaction; Advanced search: stochastic search, A* search; Introduction to reasoning under uncertainty; Introduction to natural language processing.
Content:
Labs include a mix of guided inquiry learning using a set of assignments with a deliverable and report, and time to work on open-ended projects with the aid of the lecturer.
Machine Learning
The goal of machine learning is to program computers to use example data or past experience to solve a given problem. In this course, students will be introduced to the key concepts, approaches and techniques underlying machine learning, as well as be introduced to the numerous successful applications of machine learning in our world. Students will also gain hands-on experience in implementing machine learning algorithms to solve problems.
Objectives:
To understand and be able to explain the differences between the three main styles of learning: supervised, reinforcement, and unsupervised; and to determine which of the three learning styles is appropriate to a particular problem domain. To be able to implement simple algorithms for supervised learning, reinforcement learning, and unsupervised learning. To be able to evaluate the performance of a simple learning system on a real-world dataset. To be able to explain the problem of overfitting, along with techniques for detecting and managing the problem.
Topics:
Overview; Definition and examples of broad variety of machine learning tasks, including classification; General statistical-based learning, maximum likelihood; Supervised learning: decision trees, neural networks, support vector machines; nearest-neighbor algorithms; unsupervised learning and clustering; introduction to reinforcement learning; cross-validation and performance evaluation; application of machine learning algorithms to data mining.
Content:
Labs include a mix of guided inquiry learning using a set of assignments with a deliverable and report, and time to work on open-ended projects with the aid of the lecturer.
Robotics
This course gives a practical hands-on as well as theoretical introduction to robotics as a field that integrates expertise in Computer Science, Engineering, Design and Mathematics to create innovative systems that interact with and can operate autonomously or semi-autonomously in the physical world. In this course, students will work individually and in groups to implement robotics projects using robotics platforms such as the Lego Mindstorms and EV3 kits, and the TurtleBot robot, as well as other electronic and mechanical components. Through these projects, they will learn how to build and write programs for an autonomous physical device that interacts with its environment. They will also learn to read and understand robotics research papers, to give presentations to technical and non-technical audiences, and follow a project through from an initial idea through design to implementation and testing.
Objectives:
To understand and be able to explain the foundational principles underlying the field of robotics. To be able to integrate sensors, actuators, and software into a robot designed to undertake some task. To be able to program a robot to accomplish simple tasks using deliberative, reactive, and/or hybrid control architectures. To be able to implement fundamental motion planning algorithms within a robot configuration space. To be able to read and understand robotics research papers. To be able to give presentations on robotics work to technical and non-technical audiences. Ashesi Learning Goals: Critical Thinking and Quantitative Reasoning; Communication; Curious and Skilled; Technology Competence; Leadership & Teamwork
Topics:
Historical overview; Mobile robots and manipulators; Kinematics of differential drive robotics; Basic kinematics of manipulators; Locomotion; Sensing and perception, vision; Control, motion planning; Task planning; Control architectures; Based on interest and available time, advanced/special topics such as multi-robot coordination, robot learning.
Content:
The labs involve exploration of the robotic platforms being used in the class, and practical implementation of various robotics algorithms. In the latter part of the semester, the lab sessions will be used as extra time for students to work on their final robotics projects with feedback or assistance from the instructor as needed.
Data Structures and Algorithms
This course is about data structures; that is the methods of organizing large amounts of data. It is also about algorithm analysis; that is, the estimation of the running time of algorithms. Specifically, this course will cover fundamental abstract data types and their implementations as data structures, such as lists and trees, as well as asymptotic analyses of algorithms involving these data structures. Students will also learn about searching (dictionaries, priority queues, and hashing); sorting (internal and external); graphs and algorithms on graphs (shortest path, minimum spanning trees), and encryption.
Objectives:
To be able to analyse and compute the running time of algorithms, expressing these runtimes using asymptotic notation (Big-O) To understand and be able to explain, implement and apply fundamental data structures including lists, trees, and hash tables. To understand and be able to explain, implement and apply, fundamental algorithms for searching and sorting. To apply fundamental algorithms and data structures to problem-solving and, by learning good programming and algorithm analysis skills simultaneously, to be able to develop powerful and efficient software programs. Ashesi Learning Goals: Critical Thinking and Quantitative Reasoning; Curious and Skilled; Technology Competence; Leadership and Teamwork
Topics:
Introduction, review of arrays; Runtime analysis & asymptotic notation (Big-O); Array-based lists, linked lists; Recursion; Sorting: insertion sort, selection sort, heap sort, merge sort ; Stacks & queues; Trees; Binary search trees and balanced binary search trees; Hash tables; Priority queues & binary heaps; Introduction to graphs and graph algorithms; Introduction to algorithm design techniques
Content:
Most of the weekly labs involve an exercise to work on and submit soon after the lab session. Some lab sessions involve reviewing concepts studied in class or working on open-ended projects with the assistance of the instructor.
Computer Graphics
This is an introductory course in computer graphics, an advanced topic in the field of computer science. This is not a class in how to use existing graphics-intensive applications (such as Macromedia’s Director or Flash, or Alias’ Maya or Pixar’s Renderman); we will learn the algorithms underlying these tools and the importance of implementing these algorithms for speed. The course will cover an introduction to 2D and 3D graphics, including scan conversion, anti-aliasing schemes, clipping, OpenGL programming, 3D viewing and transformations, homogeneous coordinates, perspective and orthographic projections, illumination, shading, and some topics needed from linear algebra. This is a high-workload class with significant programming expected. The nature of the course content requires that you have successfully completed Data Structures and Algorithms, and Programming III.
Objectives:
To understand and be able to implement the algorithms underlying graphics-intensive applications Technological Competence; Leadership and Teamwork
Topics:
Introduction to 2D and 3D graphics; Scan conversion; Anti-aliasing schemes; Clipping; OpenGL programming; 3D viewing and transformations; Homogeneous coordinates; Perspective and Orthographic projections; Illumination; Shading; Relevant aspects of linear algebra
Content:
Labs include a mix of guided inquiry learning using a set of assignments with a deliverable and report, and time to work on open-ended projects with the aid of the lecturer.
Thesis
A Thesis typically involves identifying a research question of interest in the Computer Science domain, determining what has been published in literature, proposing a solution which is then evaluated by simulation, experimentation, or other method appropriate to the discipline. The work may be executed in a number of ways including the design and build of some software or hardware system, proofs, evaluation or improvement of some algorithm/methodology. It provides a platform for students to carry research similar to what may be encounter in graduate school, as well as serves a means for students to demonstrate what they have learnt in the preceding years while exploring an open ended problem of a technical or theoretical nature. A well documented technical report is expected as the output.
Objectives:
Be able to integrate knowledge acquired in different classes, Have learnt the essential skills of researching published academic material. Have learnt to write a technical report appropriate to the discipline. It will be a written documentation of research work, design, methodology and analysis of results obtained. Gained experience making a presentation of their work to a team of faculty and experts, as well as to a cohort of their peers (and typically includes an oral presentation) Be encouraged to explore additional fields in this subject area that may not have been taught specifically in any one class. Ashesi Learning Goals: 1.Communications Students will make frequent oral presentations of their work, as well as present a formal written document formatted according to the style of the discipline. They will thus acquire the skill needed to communication appropriately with professionals and peers in this domain. 2.Technological Competence Students will be expected to integrate the skills they have acquired from previous classes as well as gain mastery over even additional technology that they may learn on their own. 3.Innovation and Action Students will be expected to identify a problem in industry, society or an open ended question of value. They will further be expected to propose, implement and evaluate their proposals. Solutions will no doubt need to be innovative to address the existing challenge. 4.Curiosity and Skill Students will be expected to explore topics that may never have been taught in class. Students will build sufficient skill to identify relevant information that helps them carry out their tasks. 5.Leadership and Teamwork Students may work in groups with others on the same project. They will thus learn to collaborate with others on common aspects of projects while yet carrying out their specific tasks independently. 6.Ethics and Civic Engagement Projects identified may deal with societal problems. Students may create a product or service that makes a social impact. 7.Critical Thinking and Quantitative Reasoning Students will typically obtain results from their surveys, experiments, simulations, or from the evaluation of the products they create. Students will demonstrate quantitative reasoning and critical thinking when they interpret the results and observations obtained in the context of their work an the real world.
Topics:
Capstone types and defining a topic, fleshing out & motivating topic, How to create/what is an annotated bibliography. Logistics for CS literature review (library, ACM & IEEE paper issues), Writing workshop, Writing up related work / literature review, Formulating your CS Research Methodology, Writing workshop
Content:
-- deliverables -- Capstone type (thesis/applied project) and Advisor Topic and Summary Paragraph Personal Learning Goals Preliminary Draft of Chapter 1: Background context of the topic/problem, motivation to reader (significance of the problem/why this
Applied Project
Final year Capstone projects may be run as individual projects or as group projects with individuals working on specific aspects of the projects. In the case of group projects, each is accessed individually, and each must prepare an independent report. Capstone projects may be executed as the design and build of some software or hardware system, research, evaluation or improvement of some algorithm/methodology. It provides a platform for students to carry projects similar to what may be encounter in the real world, as well as serves a medium for students to demonstrate what they have learnt in the preceding years in an applied, practical way, or to explore an open ended problem. Students will document the procedure they have followed in creating a software product or information systems, or their work may involve the design and construction of some IT related systems.
Objectives:
Be able to integrate knowledge acquired in different classes, Have learnt to write a technical report appropriate to the discipline. It will be a written documentation of product description, design, methodology and analysis of results obtained. Gained experience making a presentation of their work to a team of faculty and experts, as well as to a cohort of their peers (and typically includes an oral presentation) Be encouraged to explore additional fields in this subject area that may not have been taught specifically in any one class. Ashesi Learning Goals: 1.Communications Students will make frequent oral presentations of their work, as well as present a formal written document formatted according to the style of the discipline. They will thus acquire the skill needed to communication appropriately with professionals and peers in this domain. 2.Technological Competence Students will be expected to integrate the skills they have acquired from previous classes as well as gain mastery over even additional technology that they may learn on their own. 3.Innovation and Action Students will be expected to identify a problem in industry, society or an open ended question of value. They will further be expected to propose, implement and evaluate their proposals. Solutions will no doubt need to be innovative to address the existing challenge. 4.Curiosity and Skill Students will be expected to explore topics that may never have been taught in class. Students will build sufficient skill to identify relevant information that helps them carry out their tasks. 5.Leadership and Teamwork Students may work in groups with others on the same project. They will thus learn to collaborate with others on common aspects of projects while yet carrying out their specific tasks independently. 6.Ethics and Civic Engagement Projects identified may deal with societal problems. Students may create a product or service that makes a social impact. 7.Critical Thinking and Quantitative Reasoning Students will typically obtain results from their experiments, the evaluation of the products they create, or feedback from users of their systems. Students will demonstrate quantitative reasoning and critical thinking when they interpret the observations obtained in the context of their work an the real world.
Topics:
Capstone Seminar Topics: Capstone types and defining a topic Fleshing out & motivating topic How to create/what is an annotated bibliography Logistics for CS literature review (library, ACM & IEEE paper issues) Writing workshop Writing up related work / literature review Formulating your CS Research Methodology Writing workshop
Content:
Deliverables: Indicate Capstone type (thesis/applied project), Advisor Topic and Summary Paragraph Personal Learning Goals Preliminary Draft of Chapter 1: Background context of the topic/problem, motivation to reader (significance of the problem/why this is an important problem) Procedure/plan & schedule for requirements analysis Completed requirements analysis Revised Chapter 1: Introduction High-Level Architecture of system to be implemented Evidence of resources & set-up for implementation Schedule for Spring Semester 1-page Reflection on learning goals so far
Algorithm Design and Analysis
Algorithm design is fundamental to Computer Science, and powerful algorithms are at the heart of most of the electronic tools used every day, from Facebook to Google Maps, to airline scheduling systems. This course focuses on learning fundamental principles of algorithm design and analysing the correctness and complexity of these algorithms. It covers design strategies such as greedy, divide-and-conquer, and dynamic programming strategies. This course trains students to apply powerful problem-solving techniques to the complex problems they will encounter in their careers as computer scientists.
Objectives:
To be able to compute the time and space complexity of both iterative and recursive algorithms. To be able to use the various algorithm design strategies to solve problems, and to be able to determine the appropriate algorithm design strategy for solving a given problem. To be able to solve problems using fundamental graph algorithms. To be able to define the classes P and NP and to explain the significance of NP-completeness.
Topics:
Algorithm analysis: Asymptotic analysis, Big-O notation and use, Little o, big omega and big theta notation, Master Theorem; Algorithms design techniques: brute-force, greedy, divide-and-conquer, recursive backtracking, dynamic programming, branch-and-bound, heuristics; Graphs & graph algorithms; Foundational computational theory: Finite-state machines, Context-free grammars, Introduction to the P and NP classes and the P vs. NP problem, Introduction to the NP-complete class and exemplary NP-complete problems.
Content:
Activities in the in the weekly lab session include: working on algorithm analysis problems, algorithm design case studies, and extra time to work on open-ended assignments and projects with the aid of the instructor.
Advanced Database Systems
Advanced Database Management Systems course deals with the usage as well as concepts of design and architecture of databases. In covering the concepts, theorems, algorithms and proofs relevant to different aspects (design, architecture and implementation) are covered. The general approach is go through design, architecture (storage and indexes), core features (transactions, concurrency), and specialized database usage (data-mining, data-warehousing, distributed databases). The practical work done in the course goes through usage of some advanced SQL features and the implementation of some algorithms and coding of internals of an actual database system. Students should already know how to write queries and design databases. Students are expected to understanding the backend or underlying DBMS, using DBs, and data driven applications. The course will build further on these to include concepts such as union types and predicates. There are currently many database systems and approaches to databases. There are relational and non-relational, and amongst these there are various categories such as key-value, document, graph, object, relational or hybrid. There will be some exploration of some NoSQL databases (MongoDB, Neo4j, etc.). Additionally, we will also look at how some applications can connect to use databases. Students will also be required to use at least one programming language (e.g. Java, PHP, asp.net, etc.) to connect to and manipulate database systems in creating database driven applications. We hope we provide you a well-rounded and strong foundation in your education.
Objectives:
To be competent with conceptual, logical and non-relational database design To be able to setup and configure relational and non-relational DBMS To be able to create and use database objects such as tables, views, stored procedures, functions, indexes, constraints and triggers To be able to troubleshoot and optimize database using tools to analyze query performance
Topics:
Concept and Architecture Database Setup and Configuration Conceptual Modelling Relational Algebra Models and design of Databases Enhanced Entity Relationship Models Other models for ER and EER Implementation of Databases SQL Queries for implementation SQL Queries for manipulation and retrieval Logical Query Processing Filtering and Sorting Data Designing and Creating Views, Procedures, Functions, and Triggers Indexing Querying and Managing XML Data Concurrency Recovery Analyzing Query Performance Further Topics Database Security Storage Buffers and Memory Data Mining Data Warehousing Non-Relational Databases (key-value, graph, document, and OO) Entity Framework* Application of Databases * Creation of Applications that use Databases (using a programing language to connect to databases) - Asterisk will be covered if there is time
Content:
Database Setup and Configuration Models and design of Databases Enhanced Entity Relationship Models other models for ER and EER Implementation of Databases SQL Queries for implementation SQL Queries for manipulation and retrieval Logical Query Processing Filtering and Sorting Data Designing and Creating Views, Procedures, Functions, and Triggers Indexing Querying and Managing XML Data Analyzing Query Performance Non-Relational Databases (key-value, graph, document, and OO) Application of Databases * Creation of Applications that use Databases (using a programing language to connect to databases)
Database Systems
The course aims to introduce students to the understanding, concepts, design, implementation and use of database management systems (DBMSes) and databases (DBs). The DBMS part of the course involves understanding the approaches, techniques, models as well as the underlying database system architecture such as query planners, transaction, concurrency, security and recovery managers. Students will also learn models used at various levels – from conceptual to physical – including entity relationship (ER) diagrams, enhanced entity relationship (EER) diagrams, and unified modeling language (UML) diagrams. The various roles and users of database systems will also be explored. The course has a relational and SQL bias, but there will be some exploration of some noSQL databases (mongoDB, neo4j, etc).
Objectives:
To be competent with conceptual and logical database design To be able to setup and configure DBMS To be able to create and use database objects such as tables, indexes, constraints, etc To be able to work with data using logical query processing
Topics:
Introduction to Databases Database and Database Users Concept and Architecture Database Setup and Configuration Introduction and Conceptual Modelling Relational Model Models and design of Databases Entity Relationship Models Enhanced Entity Relationship Models Implementation of Databases SQL Queries for implementation SQL Queries for manipulation and retrieval Normalization Constraints Indexing Logical Query Processing Concurrency Recovery Further Topics Database Security Data Warehousing Non-Relational Databases (key-value, graph, document, and OO)
Content:
Database Setup and Configuration Models and design of Databases Entity Relationship Models Enhanced Entity Relationship Models Implementation of Databases SQL Queries for implementation SQL Queries for manipulation and retrieval Normalization Constraints Indexing Logical Query Processing Filtering and Sorting Data Non-Relational Databases (key-value, graph, document, and OO)
Introduction to Computing & Information Systems
This course will establish basic information technology literacy, information systems concepts, including hands-on use of computer applications, principles of digital computers and the internet, data communications and problem-solving through programming. Students will learn how to construct their own websites, develop an on-line presence through Linked-In, become adept at using Ashesi's computerized course management and grading systems, business applications, and how to design, construct and use simple databases using Microsoft Access. We will use JavaScript/Processing to introduce the following programming concepts
Objectives:
To become familiar with computers and how they are used in university studies To be able to shop for a computer, knowing key features and why they are important To be able to construct a simple Access database and query it To prepare students to be able to learn the features of various business software tools and apply these tools in efficiently and effectively solving problems. To develop team skills while constructing a website and making a group presentation To be able to construct console app, animations, graphic/webpage applications using JavaScript To learn about careers in computing and information technology
Topics:
IT Literacy Information Systems Infrastructure Databases Computer Professions Business Software Development Information Systems Management Programming how and why Fluency variables, syntax, types Useful operators Program ow, Booleans, if/else, select case Decomposition, functions/subroutines Repetition, arrays, for, while loop Drawing on the screen
Content:
Linkedin Access Databases Programming HTML CSS Variables, syntax, types Useful operators Program flow, Booleans, if/else, select case Decomposition, functions/subroutines Repetition, arrays, for, while loop Drawing on the screen
Web Technologies
Web technologies have evolved to a technology for developing enterprise applications and services on internet. This course will teach students the skill needed to develop web applications and deploy them on a network. Students will learn how to design a database for web application, create a middle layer and build an interface using common web technologies of the day. The will learn common architecture used in for web application with consideration for scale up and cross platform access. The primary goal of this course is to introduce the relevant technologies and skills needed to design, develop, and deploy effective web applications.
Objectives:
- Design and develop database web-application • Using common architectures and platforms to develop web-application • Deploy a web-application successfully • Understanding of platforms for Internet service and application
Topics:
Introduction to Web Technology (HTTP protocol, Browsers and Web Servers, Web Technology Platforms), Server Side Technology (Web Server Technology, Web Application Architecture, Data Processing and Storage, Server Side Scripting: PHP ), Client Technology( HTML/HTML5, Jscript, Style and Cascaded Style Sheet), Web Database (Database Access, Data Validation, Error Handling, Data Presentation), Web Application Development Technologies (JSON, AJAX, jQuery, XML, Local Storage, Other frameworks and libraries.), Web Application Platforms (Google, Amazon and Microsoft cloud platforms, Comparing Java and Microsoft .Net Technology, Others)
Content:
Web design, CSS, JavaScript, Content Organization, Dynamic HTML, PHP, MySQL, Modularized coding, Session Handling, Error Handling, AJAX, Git, Documentation
Computer Programming for Computer Science
This course gives students an intensive introduction to programming as a means of problem-solving. It also introduces them to the broader fields of computer science and information systems and shows a connection between computer programming and other disciplines. Concepts will be illustrated in the Python programming language. This course will introduce the object concept; using and declaring functions (methods). Basic software engineering concepts will also be introduced and will be used to solve problems through approximation, simulations, recursive formulas and data processing. This course also introduces students to the concept of modelling and simulation.
Objectives:
At the end of the course, students should be fluent in the basic concepts of modern programming using an object oriented paradigm, and should have the ability to carry out simple program development processes. They should also be able use a new approach to problem-solving to construct efficient algorithms through critical thinking. In addition, they should be able to process data and design simple simulations. Ashesi Learning Goals Addressed in this Course: 1. Ethics and Civic Engagement: An Ashesi student is an ethical, responsible and engaged member of his/her community. Students are expected to maintain a very high academic and ethical standard, as described in the “Expectations? section below. 2. Critical Thinking and Quantitative Reasoning: An Ashesi student is able to apply critical thinking and quantitative reasoning to approach complex problems. This course is all about problem-solving with computers. Students will develop the ability to analyze relevant problems, design algorithms to solve them, and implement these algorithms in the Python programming language. 3. Communication: An Ashesi student is an excellent communicator in a variety of forms. This course requires students to write short 1-paragraph responses to various assigned reading during quizzes and tests. 4. Curious and Skilled: An Ashesi student is inquisitive and confident, has breadth of knowledge, and has attained a high level of mastery in their chosen field. This course aims to develop skilled problem-solvers and programmers who have a widening understanding of the role of computer science in our complex world. 5. Technology Competence: An Ashesi student is an effective and flexible user of technology. This course focuses on developing a particular aspect of technology competence, namely programming.
Topics:
Computing with numbers, Sequences, Functions, Conditional statements, Objects and Graphics, Decision structures, Simulation and Design, Classes, Data Collection, Object-oriented design, Algorithm design
Computer Programming for Engineering
This course gives students an intensive introduction to programming as a means of problem-solving. It also introduces them to the broader fields of computer science and information systems and shows a connection between computer programming and other disciplines. Concepts will be illustrated in the Python programming language. This course will introduce the object concept; using and declaring functions (methods). Basic software engineering concepts will also be introduced and will be used to solve problems through approximation, simulations, recursive formulas and data processing. Finally, Computer Science and Programming will be applied to various engineering disciplines throughout the class.
Objectives:
At the end of the course, students should be fluent in the basic concepts of modern programming using an object oriented paradigm, and should have the ability to carry out simple program development processes. They should also be able use a new approach to problem-solving to construct efficient algorithms through critical thinking. In addition, they should be able to process data and design simple simulations. Ashesi Learning Goals Addressed in this Course: 1. Ethics and Civic Engagement: An Ashesi student is an ethical, responsible and engaged member of his/her community. Students are expected to maintain a very high academic and ethical standard, as described in the “Expectations? section below. 2. Critical Thinking and Quantitative Reasoning: An Ashesi student is able to apply critical thinking and quantitative reasoning to approach complex problems. This course is all about problem-solving with computers. Students will develop the ability to analyze relevant problems, design algorithms to solve them, and implement these algorithms in the Python programming language. 3. Communication: An Ashesi student is an excellent communicator in a variety of forms. This course requires students to write short 1-paragraph responses to various assigned reading during quizzes and tests. 4. Curious and Skilled: An Ashesi student is inquisitive and confident, has breadth of knowledge, and has attained a high level of mastery in their chosen field. This course aims to develop skilled problem-solvers and programmers who have a widening understanding of the role of computer science in our complex world. 5. Technology Competence: An Ashesi student is an effective and flexible user of technology. This course focuses on developing a particular aspect of technology competence, namely programming.
Topics:
Problem-solving strategies, Object-oriented programming, Abstraction and Generalization, Strings, Ciphers, Lists, Image Processing, Cluster Analysis, Classes, Simulations,
Software Engineering
This course covers the fundamentals of software engineering with a focus on the software lifecycle and the achievement of the required match between software requirements and the resulting product and processes.
Objectives:
They will be able to deal with the project management associated with developing a moderate to large software development project. Students will be able to • Gather and document requirements for software from a client • Design and document the architecture • Develop testing strategies • Estimate project timelines and project management tasks
Topics:
Topics covered include requirements, specification, design, quality assurance and testing, process, as well as tools and environments. Other topics include software project and risk management, and ethical and professional responsibility.
Content:
- Requirement Discovery Preparation: All member should identify a user wish list that will make the application useful for target users. That means there will be 8 ideas the group can discuss about. Output: discuss the wish list and narrow it down to two wishes
- Requirement Analysis Every student should write a scenario for the user wishes identified by the group. From the scenario, identify actors, functional requirement, non functional requirement, data entity, test cases, risk,etc
- Requirement Specification and Assign Requirement Preparation: All group members should finish the requirement analysis and bring to the group. Each student should read the software specification. Output: discuss the functional requirements identified from the analysis. Remove overlaps and select the priority functional requirements to meet the user’s wishes. Organize the specification into one document and submit as a group to software engineering class. The group should assign priority requirement to members for implementation.
- Preparation to Implement One group member should create a git hub public repository and add group members to the repository as contributors. The name of the repository should follow the template <ash-sweb-2016-groupx>. The student in charge should upload a skeleton code to the repository as master branch. Others group members should clone the repository to their personal laptop and create a branch to implement one of the requirement assigned.
- Software Model Preparation: Through the two course you will go through an exercise to model software. Using this skills, every student should create a class diagram, component diagram, sequence diagram, activity diagram based on the requirement assigned. Note that at this point you have done class diagram and activity diagrams for your web tech assignment and software engineering assignment. Output: The group should discuss and arrive at a decision on collection of classes, and components that will be used to be used to build the application. The models by group
- Testing and Documentation: The following have to be done while implementation and they should not be after thoughts • Each group member has to write automated unit testing for the code he or she is writing. The result of the unit tests should be documented and submitted along the code. • Each group member has to test implementation of other group members as professional and document the observation and submit a report as an issue report through git. The write up has to be professional and technical. • Each group member has to write a wiki page for the requirement implemented on git hub. • An API documentation should be generated using documentor chosen.
Human Computer Interaction
This undergraduate course is an introduction to Human-Computer Interaction (HCI), a discipline concerned with the design, evaluation, and implementation of interactive computing systems for human use and with the study of major phenomena surrounding them. The course considers the inherently multi- and interdisciplinary nature of HCI and situates various HCI issues in the organizational and societal contexts. It introduces theories of human psychology, principles of computer systems and user interfaces designs, a methodology of developing effective HCI for information systems, and issues involved in using technologies for different purposes.
Objectives:
At the conclusion of this course, the student should be able to: A. Explain HCI and interaction design to non• experts, B. Describe cognitive foundations• of HCI and user centered design process, C. Gather and understand user requirements, D. Design and evaluate UI of low and medium complexity, E. Communicate effectively about design and evaluation, F. Discuss some of the outstanding research problems in HCI. Leadership and Teamwork: Students will need to function well in teams in order to solve human-computer interaction and interaction design problems. Technologically Competent: Students will gain technological competency by developing deeper understandings of issues of technology design and use. Ethics and Civic Engagement: Students will discuss ethical and professional issues encountered as technology designers. Critical Thinking: The successful completion of this course will involve the practice and application of methods from different fields to address problems of technology design and use. Communication: Students will be presenting their developing understanding of HCI verbally, in written form and in technology designs as individuals and as groups. Other students and the lecturer will provide feedback. Curious and Skilled: The course will teach students to identify and exploit the constraints and resources that human activity brings to technology design and use.
Topics:
Course Introduction & Project Overview This gives an overview of the whole courses User Introduction Basics Interaction models help us to understand what is going on in the interaction between user and system. Requirements: Contextual Inquiry, User & Task Analysis Task analysis is the study of the way people perform tasks with existing systems. Human and Computer Abilities Humans are limited in their capacity to process information. This has important implications for design. Interaction Paradigms The evolution of these usability paradigms also provides a good perspective on the history of interactive computing. Organizational Requirements There are several organizational issues that affect the acceptance of technology by users and that must therefore be considered in system design: – systems may not take into account conflict and power relationships – those who benefit may not do the work – not everyone may use systems. Usability Principals & Design Principals & Universal Design Designing for maximum usability is the goal of interactive systems design. Evaluations Techniques without Users & GOMS & KLM Evaluation Evaluation tests the usability, functionality and acceptability of an interactive system. Communication & Collaboration: Conversation All computer systems, single-user or multi-user, interact with the work-groups and organizations in which they are used.
Content:
- User-Centered Design & IRB 1.1 Figure Out Who’s Going to Use the System to Do What 1.2 Choose Representative Tasks for Task-Centered Design 1.3 Plagiarise 1.4 Rough Out the Design 1.5 ThinkAboutIt 1.6 CreateaMock-UporPrototype 1.7 Test the Design With Users 1.8 Iterate 1.9 Build the Design 1.10 Track the Design 1.11 Change the Design 2. Requirements: Contextual Inquiry 2.1 Getting in Touch With Users 2.2 Learning About the Users’ Tasks 2.3 Using the Tasks in Design 3. Creating the Initial Design 3.1 Working within existing interface framework 3.2 Making use of existing application 3.3 Copying Interaction techniques from other systems 3.4 When you need to invent 3.5 Graphic designs principles 4. Evaluating the Design Without Users 4.1 Cognitive Walkthroughs 4.2 Action Analysis 4.3 Heuristic Analysis 5. Testing The Design With Users 5.1 Choosing Users toT est 5.2 Selecting Tasks for Testing 5.3 Providing a System for Test Users to Use 5.4 Deciding What Data to Collect 5.5 The Thinking Aloud Method 5.6 Measuring Bottom-Line Usability 5.7 Details of Setting Up a Usability Study
E-Commerce
This is an introduction to e-Commerce principles, technologies and applications. This course also develops understanding of the problems and requirements of Internet business, and the corresponding solutions. Protocols to ensure secure transactions and e-commerce protocols based on encryption techniques will also be studied. Legal and ethical issues will be discussed, as well as marketing and revenue models for online businesses. Students will get hands on experience building a secure ecommerce site.
Objectives:
Students will be able to build a web application for ecommerce that is secure, uses best practices, Students will understand the legal and ethical issues involved in e-commerce. Students will understand infrastructure and technology options for setting up an ecommerce site, and will have experience deploying some of them. Students will be able to determine appropriate revenue models for an online business ASHESI LEARNING GOALS ADDRESSED IN THIS COURSE: 1. Ethics and Civil Engagement a. Students will learn the intricacies of doing business online, the challenges of dealing with laws of clients from different countries, dealing with minors, anticipating and preventing potential fraud, and being fair in fulfilling orders placed. 2. Communications a. There will be presentation of work done to the class and hopefully to the Ashesi community and the world at large when students make their work available for all to critique, both in live presentations, as well as when posted on the WWW. 3. Leadership and Teamwork a. Students will work in teams sometimes, with one product as the output. Leadership will be shown by student as they guide and help along their colleagues to grasp certain concepts. 4. Curious and Skilled a. Students will be excited enough about the potential for what technology can accomplish and will be expected to push the boundaries by incorporating features that are not taught in class in the projects that they will do. Such work will be recognized for extra credit. 5. Technology a. Students will become adept at using contemporary tools to develop online business solutions, and should be able to either start their own business or work in this area.
Topics:
*Introduction to ecommerce, *Business Strategies: (Building an online/Web presence , Selling online: revenue models, Marketing on the Web, EDI /Improving Business to Business activities, Social networking, Mobile commerce, Online Auctions.) *Web Technologies for E-Commerce: ( Payment Systems, Shopping Carts, Search Engines, Web Server Hardware and Software, E-commerce software, Other supporting web technologies: Use of templates ), *Legal issues and business ethics (Fulfillment and Customer Service, Tax Issues), *E-commerce Security (User Authentication , Sessions, Secured Protocol (SSL, OpenSLL), Encoding/Decoding Techniques (Encryption ) ), *E-commerce Integration ( Planning for e-commerce, New technologies and their implications on e-Business)
Content:
- Web Tech review: create a basic store front, Admin can perform CRUD operations on product, provide login page, sessions review 1b. Use of MySQLi, PDO (instead of mysql) 2. Templates and pagination: Basic templates, template blocks, template inheritance, conditionals, Pagination (numbered, and next, previous) 3. Shopping cart & Sessions: Sessions over multiple pages, sessions and arrays, basic shopping cart 3b. Shopping cart - allow adding to cart without logging in, can continue shopping 4. Error handling and logging: custom error handler, error reporting, buffering output with ob_start() etc 4b. PDF reports 4c. Reload problem 5.Mini Project 1: Database, Templates, Shopping cart & Checkout, Order processing with email/SMS, Searching & Browsing, Client information management, Reports, error handing, session management, avoid reload problem, 6. Form processing, Validation, regular expression parsing, Security: use of prepared statements, prevent SQL injection, XSS etc
Mobile Application Development
This course introduces the principles of developing interactive mobile applications and services that may be resident on a phone or the web. There will generally be interaction between the client app and the service online. Students will be exposed to a variety of different popular, contemporary or emerging platforms and operating systems, and be sufficiently informed about the different options and capabilities available on these platforms. Students will also be exposed to the features (both hardware and software) and sensors available on mobile devices and will be encouraged to explore their use in building applications and services. This course requires good programming skills in at least one language, as well as web development ability. Principal topics include mobile friendly web app development, SMS application development and native app development. Client side app development on platforms will include at the minimum J2ME*, Android and Windows Mobile. Development using contemporary cross platform tools (including CodeNameOne, Cordova/Phonegap) will also be explored. Software Engineering and design (look and feel) will be emphasized. Insight into entrepreneurship (building a business around a mobile application) will be provided. Attention will be paid to exploring new, emerging technologies. The course is very project oriented, as students must receive many hours of hands-on practice and experimentation.
Objectives:
To equip students with the skills to design mobile phone applications – for dumb phones and smart phones and everything in between. To give students hands on experience on a range of contemporary mobile app development platforms, techniques, tools and methodologies. To empower students to design and develop and deploy their own web services that are mobile friendly. To encourage students to become mobile app entrepreneurs. To identify needs and opportunities in the developing world and to develop businesses and services out of these. ASHESI LEARNING GOALS ADDRESSED IN THIS COURSE: 1. Innovation and Action Oriented a. Students will be encouraged to identify challenges in society around which they can build services and businesses. They will typically have a short amount of time from concept through development to deployment. This will prepare them for the real world, to be action oriented. 2. Communications a. There will be presentation of work done to the class and hopefully to the Ashesi community and the world at large when students make their work available for all to critique, both in live presentations, as well as when posted on the WWW. 3. Leadership and Teamwork a. Students will work in teams sometimes, with one product as the output. Leadership will be shown by student as they guide and help along their colleagues to grasp certain concepts. 4. Curious and Skilled a. Students will be excited enough about the potential for what technology can accomplish and will be expected to push the boundaries by incorporating features that are not taught in class in the projects that they will do. Such work will be recognized for extra credit. 5. Technology a. Students will become adept at using contemporary tools to develop online business solutions, and should be able to either start their own business or work in this area.
Topics:
INTRODUCTION ( Mobile Apps: Opportunities & Course Overview, Software Engineering in the mobile context. Agile development) SMS Applications ( Web based services: aggregators eg SMS GH, Modem/phone based services: Frontline SMS, introduction to AT commands, Offline services) BROWSER-BASED APPLICATION DEVELOPMENT ( Mobile web development, Intro to W3C Standards and best practices, xHTML, access keys, User agent sniffing, Device Recognition, dotMobi, use of device atlas, Device detection vs mobile first responsive design. CSS media queries, Mobile Web Design Tools and Certifications Dynamic Content RSS and Advertising, Mobile friendly web technologies eg AJAX, image adaptation etc., HTML5 features for mobile., jQueryMobile (forms, lists, themes, panels, javascript, storage, geolocation, canvas, application cache, manifest, view ports, touch & swipe guestures, orientation etc)) NATIVE APPLICATIONS ( App Inventor (basic forms, file I/O, lists, HTTP etc), Android: activities, events, http, lists, spinners, fragments, SQLite, GPS, media, graphics, canvas, game development, camera, sensors, file IO, new: services, J2ME (similar coverage as for android), Windows 8 (same range of topics as for android)) CROSS PLATFORM DEVELOPMENT ( Phonegap/Cordova —> use of JQuery Mobile, CodeNameONe) ENTREPRENEURSHIP ( Marketing & Advertising, Business models, Business Plans Nuts and Bolts of Writing an Executive summary, Legal Issues, Design & presentation issues (eg consistent themes)) * one of new topics: ( Angular JS, Ionic framework, Sencha touch, Titanium appcelerator, Swift for iOS, Python for Android)
Content:
*Each meeting of the class has a practical/lab component. *Each platform has a mini project (typically requiring Forms with variety of widgets, Lists, HTTP, saving locally on device, QR/barcode scanning, GPS, graphics- drawing (eg charts) on a canvas, and sometimes game routines.) App Inventor: data collection app, with HTTP submission and barcode reading WEB: xHTML with device detection, with CSS media queries PhoneGap: HTTP data collection, with QR code reader, offline storage SMS: Frontline to send and receive data based on DB query SMS: SMSGh - SMS on registration, One time passwords Android: Temperature converter, two forms with intents, start activity for result, submit data by HTTP Android: Viewing Canteen menu, and Ordering food Code Name One: Survey app, fetch into list via HTTP Window Mobile Lab: Survey app, fetch into list **Midsem project and Final project includes desktop web, mobile web, SMS, at least one native platform, at least one cross platform used complementarily in one open ended or fixed project.
Computer Networks and Data Communications
This course introduces students to the theory and practice of computer networks and network design. Students will be introduced to the principles of data communications and transmission. Protocols employed in layers 1 to 3 will be examined in depth. Layer 4 protocols will be highlighted and compared to layer 2. Methods and mechanisms for constructing distributed computing systems and network services are discussed in the context of common Internet systems such as electronic mail, print and file servers and Web services. Labs will cover typical network operations tasks. Students will review of hardware used in practice, common topologies and set up services on typical enterprise networks.
Objectives:
After successful completion of this course, Students will be able to build a moderately sized computer network be able to set up and administer network services be able to explain the operation of protocols at the different layers of the OSI work. Be able to compare and make appropriate protocol choices be prepared for post graduate studies in this area ASHESI LEARNING GOALS ADDRESSED IN THIS COURSE: 1. Leadership and Teamwork Students will work in groups, forming “Companies? whose network issues they will solve in various group lab projects. They will also learn to collaborate with other groups as success of their work depends on the output of other groups, and their own group’s performance will also affect other “companies?. 2. Technological Competence Students are expected to learn and be familiar with the large collection of technobabble associated with this subject area. They will be able to set up medium sized networks that work, as well as be suitably prepared for postgraduate work in this area. 3. Curiosity and Skill Students will be introduced to a wide range of subjects, and will become inquisitive about the explanations for various phenomena that occurs in telecommunications networks and will seek to find answers and explanations to observations they make in every day life. (where telecoms meets life). Students will build sufficient skill to address every day challenges in office data communications networks.
Topics:
Four parts: 1. Introduction: Practical networks – hardware and software: *Hardware, Software, Services , common topologies & technologies. 2. Network Protocols and communications theory *Physical Layer: Communications Theory, Guided Media, Wireless and Mobile Communications, PSTN and cable Television *Data Link Layer: Framing, Flow Control, and Error Control *MAC: Contention and Contention free protocols including Slotted Aloha, CSMA/CA p-persistent CSMA, CSMA/CD, Adaptive tree walk, binary count down, bit mapped etc. MACA, MACAW. DLL hardware: bridges, Repeaters, Switches (also compare to Hubs, Routers, Gateways) *Network Layer: Design Issues, Routing, Congestion control, QOS, Internetworks *Transport Layer: Addressing, Berkeley Sockets, TCP, UDP *Applications: HTTP, FTP, SMTP etc 3. Network Security Cryptography, Symmetric Key Algorithms, Public Key algorithms, Authentication Protocols 4. Network services, and programming
Content:
lab1: Objective: To get familiar with networking equipment, To get familiar with setting up a SOHO network, Configuration of an FTP server lab 2: Common network applications and their deployment. Deploy and configure Mercury mail on localhost, configure IMAP, POP, configure mail server to fetch external mails, configure domain mail boxes for other “companies?/groups Lab 3: Install and configure Web services for virtual web hosting for multiple co-tenants. (Web server, Mail server, FTP server, database server etc on both Windows Server 2012/16 and on a UNIX type OS(e.g. Linux). Deploy a web based email client eg roundcube. Deploy at lease one other web based application e.g. CMS, CRM, e-commerce software etc) Document work in a short lab report (2 weeks mini project) lab 4a: localhost command line commands, access remote linux host, command line tools and OS commands lab 4b: linux command line tools lab 5: shell scripting, also VI editor lab 6: FTP, file utilities, shell scripting, file permissions Lab 7: Ethernet Frame Analysis, use of wireshark for packet capture lab 8: HTTP and sockets programming (mini project)
Intermediate Computer Programming
This course will teach you to become familiar with the conventional methods for software development, introduce good development practises (eg creating javadoc documentation, naming and coding style conventions), the tools of the trade(eg use of version control systems), and how to collaborate on a software development team. Students will become acquainted with libraries to facilitate the development of common graphical desktop applications. Basic software engineering techniques will be heighted and practised in two separate group projects. (waterfall/phased and agile). Students will be introduced to the use of the MVC architecture, and while studying classes and object inheritance, will explore common design patterns (eg Singleton, Observer, Factory etc). Students will learn to program against a database, as well as have an introduction to network programming (http I/O). An introduction to programming in C/C++ will be given, and depending on progress of the class, additional lectures that introduce mobile application programing and programming with C# or J2EE will be explored.
Objectives:
- Students will be able to make use of good software engineering practices to develop moderately sized applications Learn to use common versioning systems and for collaboration. 2. C++ Programming Students will be able to Write console applications in C++ Use pointers correctly Reuse code by means of inheritance 3. Java programming: Students will Become very proficient Java programmers Make use of inheritance and object hierarchies Write applications with GUIs using model-view patterns Write multi-threaded applications Manipulate data in files Be introduced to the Collections framework. Be able to write networked applications (including network IO) ASHESI LEARNING GOALS ADDRESSED IN THIS COURSE: 1. Leadership and teamwork: Students will work on some projects in teams and will learn to collaborate with others to create a viable product. 2. Curiosity and Skill: Students will be expected to explore a few new technologies beyond what is taught in class, on order to accomplish some projects 3. Technological Competence: Students will acquire specialist knowledge in application development. 4. Communication: An Ashesi student is an excellent communicator in a variety of forms. This course requires students to document the requirements of at least one major project (similar to Software Engineering). It is a form of technical communication.
Topics:
*Software development practices: Javadoc documentation, Coding conventions, use of GIT, command line compilation, command line parameters. Basic use of UML diagrams and software engineering (use case, activity, class diagrams, requirements elicitation) Also use of class relationship collaboration (CRC) cards in Object Oriented Analysis and Design (OOAD). JUnit testing. Design Patterns (including Singleton, Factory, MWC, Iterator, Observer and Front Controller), MVC. Overview of SW Engineering methodologies (waterfall and agile) *Java topics: Objects and inheritance (including abstract classes, packages, nested/inner classes), Review of String and date manipulation, error handling and enumerated types. Function parameter passing. File I/O (new topic: random access files & serialization), network I/O with URLs, Collections framework and Maps (Arraylists, TreeSets, HashMaps etc.), Threads, Introduction to Swing, GUI applications with IDE tools, Database connectivity from Java application, MVC architecture. Printing in Java. *C++ topics: Basic IO, control structures, and loops, formatting of output. Comparison to Java, Exception handling, function overloading, parameter passing, introduction to pointers and pointer arithmetic, dynamic arrays , structures, typedefs, functions, classes, inheritance, dynamic instantiation, operator overloading, File I/O and data structures using classes in C++
Content:
Lab session consist of individual programs written in lab, as well as a few group projects. Labs: lab 1: Creating documentation, Command line parameters, using GIT, use of command line tools: javadoc , packaging applications using jar lab 2: Collaborative team development, Working with GIT in a team, work on remote server at command line lab 3: Fisherman Problem: loops, arrays etc. lab 5: collections, java GUI, data entry, tables, “data structures? & reporting lab 6: java file IO, Network IO lab 7- pointers lab 8: plot histogram (C/C++) lab 9: C structures, pointers lab 10 C++ classes lab 11: C/C++ file/IO GUI Projects: (one group project, one individual project) Two java GUI applications with a variety of mandatory UI controls, database connectivity, must use MVC and demonstrate design patterns, documentation, be packaged
Discrete Theory and Structures
The course will introduce concepts of elementary discrete mathematics and their application in computer science, engineering and biological mathematical modeling. It focuses on mathematical vocabulary, definitions and proofs.
Objectives:
Students will become proficient in completing logical proofs. They will become familiar with different applications of discrete mathematics. Students will gain experience in critically reviewing and analyzing current scientific literature. Students will gain experience in oral presentations. Students will gain experience in critical thinking and quantitative reasoning, Students will be encouraged to be curious skilled and will improve their communications skills.
Topics:
Topics covered include: fundamentals of logic and set theory, methods of proof and formal reasoning, counting and enumeration, discrete probability, binary relations, and graph theory
Content:
Different problem sets to reinforce the concepts discussed in the lectures, Research for the critical review project, Presentations of the Critical Review
Computer Organization and Architecture
This course presents the fundamental concepts of computer organization and instruction set architectures. Assembly language programming is used to present and illustrate the concepts of instruction set design. The basics of Central Processor Unit (CPU) design and implementation are covered, including some performance enhancing methods like pipelining and memory caches. The interface to the Compiler and Operating System is described in terms of the interaction between the hardware and software components of a system. The course discusses developments in modern computer system such as parallel processing, virtual computing and other new architectures.
Objectives:
Understanding of digital system design process Understanding of modern computer architecture Understanding of memory and IO organization Understanding of Software-Hardware interface Understanding of low level programming
Topics:
Introduction:Computer Block Diagram CPU ( Register File , ALU, Control Unit, Instruction Fetch), Memory, IO and Bus, History of Computer. Information Representation:Unsigned, Signed, Floating Point, ASCII and UNICODE,Bit Map Sound, Video, 3D. Background for Digital Designing:Concept of Digital systems, Boolean Algebra, Logical Equation, Optimization with K-Map. Processor: Design of ALU (Addition , Subtraction, AND, OR) Control Unit( FSM, Microprogramming) . Instruction Set Design, Pentium/MIPS instruction set. Assembly Language: Detail Discussion on Instruction Set, Simple Assembly Program, Type of Instructions, Address Mode, Stack, Procedure. Performance Enhancing in Computer Architecture: Performance Metric, Pipelining, Caches, RISC/CISC computer architecture, Parallel Processing. Advance Architectures: Hyper-threading, Virtualization, Cloud computing
Content:
Identifying Computer Components, Introduction to Electronics Design ALU ( using CAD software ) Programming Microprocessor using Assembly Language
Intermediate Computer Programming
This course will introduce students to more details of object definition, program construction, and event-driven programming. It will also introduce additional standard Java packages, including the file system and graphical user interface elements. Basic data structures will be introduced and implemented, including lists, stacks, queues, and simple kinds of trees (through binary search trees). This course will also give students an introduction to C++ and to programming techniques for dynamic data structures. Students will study algorithms for ordering, searching, traversing and manipulating these data structures, including some recursive algorithms. Good software engineering practices will be featured in various aspects of the course, and notations similar to the Unified Modeling Language (UML) will be employed. Through one or more team projects, students will gain experience in designing and implementing larger systems. However, the emphasis of the course will be on the use of prewritten packages and built-in language facilities, as well as design and implementation of moderately sized custom classes and algorithms, rather than on the design of whole systems.
Networks & Distributed Computing
Code: CS 451
Prereq: CS 112 Computer Programming for Engineering
This course introduces the underlying principles of computer network design, from the physical layer up through data transport protocols. Physical layer interface alternatives and mechanisms employed by common protocols at layers 2 to 4 are discussed. Methods for constructing distributed computing systems and network services are discussed in the context of common internet systems such as electronic mail, print and file servers and Web services. A holistic view of network and information security is introduced: encryption standards, cryptographic techniques and social issues. The goal of this course is to provide students with an understanding of how to construct large-scale computer networks
Topics:
Applications of networks, hardware and software, network architecture reference models, physical layer interface alternatives: guided and unguided media, and common networks including fiber, VSAT, cable standards, wireless standards and networks such as mobile telephone systems. Modulation and multiplexing techniques. An introduction to information theory (Shannon, Nyquist etc.). Protocols for flow control, error detection and control, media access control, routing and congestion control, and transport protocols. Sockets programming is introduced. Cryptography, authentication, pubic key algorithms, symmetric key algorithms and digital signatures.
Operating Systems
The course covers the main concepts and issues in operating system design, implementation and engineering, and is roughly divided along three dimensions: core operating systems concepts, information technology, and systems programming. Core operating system concepts involves understanding how operating systems work, what the features are, how they are designed, the issues with various approaches, and an overview of computer science techniques used or applied in operating systems. The aim of this part of the course is for students to understand and even build or contribute to some parts of an operating system. The course will include a team project.
Topics:
Operating system structures, processes, threads, CPU scheduling, synchronization and deadlocks, system calls, interrupts, OS data structures, process management, memory management, including virtual memory, storage/file system management, mass storage structure, I/O systems, device management, resource allocation, scheduling, security and protection, Storage management: distributed System structures, distributed file systems and distributed coordination. Real time operating systems. Case study of influential operating systems (including at least one of Linux, Windows). Overview of system administration, OS installation and configuration, shell scripting, system programming, applications support, case studies.
Data Structures & Algorithms
This course covers fundamental abstract data types and their implementations as data structures such as lists and trees, and introduces asymptotic analyses of algorithms involving these data structures. Students will also learn about searching (dictionaries, priority queues, and hashing); sorting (internal and external); graphs and algorithms on graphs (shortest path, minimum spanning trees); and pattern matching.
Data Mining
Computers are collecting more and more information about us daily. How can we collect, organize, and distill the deluge of data around to answer important questions? In this class, we will use Excel functions, experiment with the iNZight statistical package built on top of the R programming language, as well as do some R coding to demonstrate big data techniques. Topics include Bayesian Classifiers, K-nearest neighbors classifiers, multiple regression, Network problems using Gephi and R, and forecasting using Holt-Winters smoothing.
Objectives:
Stuudents will develop analytical and conceptual thinking skills for Big Data projects. Students will practice logical, yet creative, approaches to problem-solving. Students will refine their spreadsheet modeling skills. Students will improve their ability to learn new software tools for analysis.
Topics:
We begin with excel pivot tables, progress to linear and non-linear single and multiple regressions using Excel and R. Exploratory Data Analysis using iNZight, Excel, or R. Classifying tweets based on training with pre-classified tweets. Visualize their own facebook or twitter neighborhood using graphical tools such as Gephi. Develop and present a persuasive argument to peers about an interesting application of Big Data.
Content:
Random forest text authorship exercise. Facebook or twitter neighborhood visualization using Gephi and scraping.