ADVANCED SCHOOL OF SYSTEMS AND DATA STUDIES (ASSDAS) PROGRAM: CTech in Computer Science Program Schedule CTech Computer Science Credits CS101 Computer Science I 3 MATH100 Foundations of Mathematics and Statistics 3 CS103 Principles of Programming with C++ 3 ENG101 Introduction to Engineering 3 SE100 Fundamentals of Software Engineering CS103L Principles of Programming with C++ Lab - Course Descriptions CS101 COMPUTER SCIENCE I 3 The course introduces students to the various field of computer science and provides an introduction to the historical and social context of computing and an overview of computer science as a discipline. Students are introduced to a number of basic and fundamental concepts of computer science including: computer hardware and to the technological evolution of the computer, the digital computer and its key functions; the computer system: the hardware and the software sub-systems. The second part of the course focuses on introducing students to the computer science as a discipline and also introduced students to the programming problem solving paradigm using the C++ programming framework and abstracts. On completion of this course students will have an in-depth knowledge and appreciation of the computer science field and systems. Prerequisites: None 1
Course Syllabus 1.0: Introduction to Computer Science 1.1 What is Computer Science? 1.2 Overview of Computer Science as a Discipline 1.3 Computer Science Concepts and Paradigms 2.0: The Computer and its Technological Evolutions 2.1 Analog and Digital Computers 2.2 Information Representation in Digital Computers: The Computer Number System 2.3 Key Functions of the Digital Computers 2.4 Examining the Digital Computer into Details 2.5 The Technological Evolution of Digital Computers 2.6 Characteristics of Digital Computers- A Summary 3.0: Key Functions of the Digital Computer System 3.1 The Input Function 3.2 The Processing Function 3.3 The Output Function 3.4 The Storage Function 4.0: Classification of General-Purpose Digital Computers 4.1 Types of Digital Computers 4.2 Processing speed 4.3 Processor type 4.4 Clock speed 4.5 Memory capacity 4.6 Secondary storage capacity 4.7 Number of Users 4.8 Expandability and Upgradability 5.0: Components of the Computer System 5.1 The Hardware Sub-System: Inside the Computer - The CPU/MPU and Memory 5.2 The Hardware Sub-System: The Input/Output Sub-System 5.3 Types of Input/Output Devices and Media 5.4 The Software Sub-System: Systems Software 5.5 The Software Sub-System: Applications Software 5.6 The Software Sub-System: Computer-Based Information Systems 6.0: The Computer Science as a Discipline 6.1 The Universal Machine 6.2 The Anatomy of the Computer Layers of Virtual Machines The Register Machine Model 6.3 The Operating System 6.4 Binary Data Representation and Binary Arithmetic 7.0: Introduction to the Programming Problem Solving Paradigm 7.1 Problem Solving Before Programming Problem-Solving Strategies 2
Algorithms as Paths Through Problem Spaces Givens, Goals, and Resources Analyzing and Exploring Problem Spaces From Blind Search to Informed Search Analytical Reasoning The Analogical Approach 7.2 Programming Languages and Translators Interpreters versus Compilers How Compilers Produce Machine Code Stages of Translating a C++ Program Components of a Compiler Describing Syntactic Structures The Backus-Naur Form (BNF) Semantics ( Meaning ) Derived from Syntactic Structures An Overview of Programming Languages 8.0: Problem Oriented Programming in C++ 8.1 A Taste of C++ The Function main() The cout and cin Streams Comments 8.2 Arithmetic in C++ The C++ Vocabulary Variables and Types Data Objects Variables Declaration of Variables Elementary C++ Data Types Integers Floating Point Numbers Type Conversions in Expressions Qualifiers for Variable Declarations 8.3 Structured Programming Using Control Flow Commands Statements for Decision and Control Conditionals Decisions, Decisions,... 9.0: Tools for Data Abstraction 9.1 Arrays and Strings One-Dimensional Arrays Strings 9.2 Pointers Pointer Basics Working with Pointers Pointers and Function Parameters 9.3 Structures Structures Structures and Pointers 10.0: Procedural Abstraction with Functions 10.1 Using Functions for Procedural Abstraction Function Prototypes 3
Scope Rules of Functions The return Statement 10.2 Functions and Parameter Passing Passing Arguments to Functions Parameter Passing Mechanisms 10.3 Recursive Functions Recursive Functions Further Examples with Recursion The Towers of Hanoi 10.3 File Input and Output Opening and Closing a File Reading and Writing Text Files Detecting End-Of-File (EOF) CS103 PRINCIPLES OF PROGRAMMING WITH C++ 3 The course introduces students to the principles of programming including an introduction to the fundamental concepts of procedural programming with emphasis on problem solving, programming and algorithm design; use of a high-level programming language for solving problems and emphasizing program design and development; topics include basic programming constructs, expressions, conditional statements, loop statements, functions, classes and objects, data types, arrays, and strings. Topics include: types of programming languages, tools, approaches and methods; data types, control structures, functions, arrays, files, and the mechanics of running, testing, and debugging. The goal is to introduce programming in terms of basic principles and concepts and these are demonstrated through programming in C++ as an introduction to object oriented programming language. Prerequisites: None Course Syllabus 1.0 Introduction to Programming 1.1 What is Programming? 1.2 History of Programming 1.3 Generations of Programming 1.4 The various levels of Programming 2.0 Types of Programming or approaches 2.1 Non-Structured or Monolithic Programming 2.2 Structured programs 2.3 Top-down and Bottom-up Approach or Paradigm 3.0 Practical Session 3.1 Pseudo code 3.2 Flowchart 3.3 Introduction to UML 4.0 Getting Started 4.1 Statements 4.2 Variable types 4.3 Operators 4.4 Conditional statements 5.0 Further Syntax 4
5.1 For and while loops 5.2 Increment and Logical operators 5.3 Sorting algorithms 6.0 Functions 6.1 Library and user created functions 6.2 Declarations 6.3 Arguments 6.4 Overloading 7.0 Pointers and References 7.1 References 7.2 Pointers 7.3 Passing by reference 7.4 Pointers and Arrays 7.5 Constants 8.0 Introducing Classes 8.1 Declarations 8.2 Member Variables and Functions 8.3 Accessors 8.4 Overloading 9.0 Classes in Practice 9.1 Constructors and destructors 9.2 Constant Functions 9.3 Memory Management 10.0 Designing Classes 10.1 Passing by constant reference 10.2 Copy Constructors 10.3 Overloading Operators 11.0 Towards OO Design 11.1 Inheritance 11.2 Virtual Functions 11.3 Multiple Inheritance 11.4 Abstract Classes MATH 100: FOUNDATIONS OF MATHEMATICS AND STATISTICS 3 This course is in two parts. The Part 1 focuses on Mathematics covering topics in intermediate algebra and calculus. Topics in intermediate algebra include: equations, algebraic functions, linear equations, polynomials, radicals and complex numbers. Topics in calculus include: introduction to differential calculus: functions, limits, continuity, derivatives, differentiation rules. The Part 2 of the course focuses on Statistics covering topics in the area of: the nature, role and approach of statistics; population and samples, descriptive statistics: tabular and graphical representation, summary measures and introduction to probability. Prerequisites: None 5
Course Syllabus Part 1: Mathematics: Algebra and Calculus 1.0: Equations, Ratios, and Proportions 2.0: Equations with Two Variables 3.0: Algebraic Fractions 4.0: Linear Equations in One Variable 5.0: Segments, Lines, and Inequalities 6.0: Linear Equations In Two Variables 7.0: Linear Equations In Three Variables 8.0: Polynomial Arithmetic 9.0: Factoring Polynomials 10.0: Rational Expressions 11.0: Relations and Functions 12.0: Polynomial Functions 13.0: Radicals and Complex Numbers 14.0: Quadratics In One Variable 15.0: Conic Sections 16.0: Quadratic Systems 17.0: Introduction to Differential Calculus 18.0: Functions, Limits, Continuity, Derivatives, Differentiation rules Part 2: Statistics 1.0: Introduction to Statistics 2.0: Overview of Computer Science and Business Applications in Statistics 3.0: Population and Samples 4.0: Descriptive Statistics: Tabular & Graphical Representation 5.0: Descriptive Statistics: Summary Measures 6.0: Introduction to Probability SE100 FUNDAMENTALS OF SOFTWARE ENGINEERING 3 This is an introductory course in software engineering for computer science, computer engineering and information technology students. The course provides an overview of software engineering; a study of the nature of the software development process; the software development life cycle and the various types of software development process model: The Waterfall Model, The Rapid Prototyping Model, The Incremental Development Model, The Component Reuse Model and The Spiral Model. The course also provides an introduction to computer aided software engineering Prerequisites None Syllabus 1.0: An Overview of the Development of Computer Systems 1.1 How Computer Systems are Developed 1.2 The Organization and Technology People Involve in Computer Systems Development 1.3 Hardware Systems Development 1.4 Software Systems Development 6
1.5 Information Systems Development 1.6 What is Systems Analysis and Design? 2.0: Introduction to Software Engineering 2.1 Programming vrs Software Development? 2.2 What is Software Engineering? 2.3 The Software Crisis 3.0: The Software Development Life Cycle (SDLC) 3.1 Problem Definition and Requirement Analysis Stage 3.2 Functional Specification Stage 3.3 Software Design Stage 3.4 Program Coding Stage 3.5 Program Testing Stage 3.6 Installation/Implementation Stage 3.7 Software Maintenance Stage 4.0: Types of Software Development Process Models 4.1 The Waterfall Model 4.2 The Rapid Prototyping Model 4.3 The Incremental Development Model 4.4 The Component Reuse Model 4.5 The Spiral Model 5.0: Introduction to Computer Aided Software Engineering (CASE) 5.1 What is CASE? 5.2 The Motivations Behind the Development of CASE Tools 5.3 Features of CASE Tools 5.4 Types of CASE Tools 5.5 Benefits of CASE Tools 5.6 Some of the Problems Associated with CASE Tools ENG101: INTRODUCTION TO ENGINEERING 3 This course is in two parts and introduces students to the field of engineering and the engineering profession and provides them with a chance to become familiar with various engineering disciplines, learn what engineers do and the skills that are important to engineers. The Part 1 of the course concentrates on: (i) An overview of the genesis and evolution of the engineering profession to the present day, career paths within the profession; study of ethics and with emphasis on the engineering workplace; engineering design and analysis techniques, development of problem-solving skills and communication skills; (ii) Series of lectures on the various fields of study within engineering, the engineering profession, types of engineering work activities among others. (iii) Team building and the teamwork approach (teamwork, communications, problem solving, computer etc.) to projects and problem-solving common in an engineering curriculum and in the engineering profession. The Part 2 of the course focuses on Engineers and Society and considers topics relating to: (i) the professional aspects of an engineering career (ii) ethics and responsibility, the role of the professional society, the importance of communication, and the realities of the workplace; Students are also introduced to the role of ethics in engineering and the importance of ethical behavior in the engineering profession; and (iii) standards and issues relating to Intellectual Property, professional conduct and safety. 7
1.0 The Engineering Profession 1.1 Introduction to the Fields of Engineering 1.2 Introduction to the Engineering Profession: The Engineer 1.3 The Engineering Profession: Working Environment and Engineering Educational and Professional Development 2.0 Elements of Engineering Curriculum 2.1 Engineering Curriculum Design ABET 2.2 The Engineering Curriculum-Perspectives and Practice 2.3 The AIT Engineering Curriculum 3.0 Engineering Education and Practice 3.1 Engineering Education and Practice in the US 3.2 Advanced Engineering Environments 3.3 New Paradigms for Engineering Education 3.4 Evolving Engineering Education 4.0 Ethics in Engineering 4.1 Introduction to Ethics in Engineering 4.2 Ethics in Engineering Case Studies 4.3 The National Society of Professional Engineers (NSPE) Code of Ethics 5.0 Team Building and Team Work in Engineering 5.1 What is Team Building? 5.2 How to Build Teams 5.3 Engineering Team Building in Practice CS103L PRINCIPLES OF PROGRAMMING WITH C++ LAB 3 This is a practical laboratory based course designed to provide students practical skills in designing and coding C/C++ programs. Students will attend a number of tutorial-based laboratory sessions and will also be given a number of programming exercises to implement. These laboratory sessions are designed to compliment what students are taught in CS103 8