## Introduction to Programming

Semester 2

To introduce the students to computers and impart fundamental programming skills prerequisite to the more substantial computer oriented topics in the coming semesters which are ultimately necessary to reach a threshold level of competence in software engineering, computer engineering and program implementation in the BSc Electronics Engineering degree.

Syllabus:

Introduction to Computers
History and Overview
• Describe the basic components and functionalities of a computer system.
• Identify the types of programming languages needed for engineering problem solving
• Explain what is meant by software.
• Understand the concept of the Operating Systems (types and usage).
• Understand the use of Compilers and interpreters

Programming Fundamentals
History and Overview
• Define the meaning of algorithm and data structure.
• Know the reasons that a way to solve problems is by using algorithms.
• Identify the difference between various programming paradigms.

Programming Constructs
• Analyze and explain the behavior of simple programs involving fundamental programming constructs.
• Write a program that uses each of the following fundamental programming constructs: basic computation, simple I/O,
standard conditional and iterative structures, and the definition of procedures and functions.

Data Structures
• Identify data structures useful to represent specific types of information and discuss the tradeoffs among the different
possibilities.
• Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash
tables.
• Describe the way a computer allocates and represents these data structures in memory.
Recursion
• Explain the concept of recursion.
• Explain the structure of the divide-and-conquer approach.
• Write, test, and debug simple recursive functions and procedures.
• Describe how recursion can be implemented using a stack.

Introduction to Algorithms
History and Overview
• Associate some of the themes involved with algorithms.
• Name some applications where algorithms are important.
• Describe how computer engineering uses or benefits from algorithms.

Basic Algorithmic Analysis
• Use big O, omega, and theta notation to give asymptotic upper, lower, and tight bounds on time and space complexity of
algorithms.
• Determine the time complexity of simple algorithms.
• Deduce the recurrence relations that describe the time complexity of recursively-defined algorithms, and solve simple
recurrence relations.

Algorithmic Strategies
• Design an algorithm using a fundamental algorithmic strategy including brute-force, greedy, and divide-and-conquer
strategies.

Introduction to Database Systems
History and Overview
• Explain how knowledge differs from information and data.
• Identify components of a database system.
• Identify some common query languages.
• Articulate the purpose of a data model.
• Describe how computer engineering uses or benefits from database systems and information management.

Database Systems
• Explain the characteristics that distinguish the database approach from the traditional approach of programming with data
files (file-oriented repositories).
• Cite the basic goals, functions, models, components, applications, and social impact of database systems.
• Describe the components of a database system and give examples of their use.
• Use a query language to elicit information from a database.

Data Modeling
• Categorize data models based on the types of concepts that they provide to describe the database structure.
• Compare and contrast the basic principles of the relational data model and those of the object-oriented model as they apply to computer engineering applications.

Evaluation:

Practical/ Lab Based Coursework:   24%

Incourse Assessments:                      46%

Tutorials/Assignments:                      30%

Learning Objectives:

Upon successful completion of ECNG 1009, students will be able to:

• Introduction to Computers: Use standard laboratory software tools such as compilers, linkers, and operating systems.
• Programming Fundamentals: History and Overview, Constructs, Data Structures: Describe, and analyze, data structures, such as those created using arrays, lists, and pointers, using sets and graphs; Implement small-scale software programs by applying  understanding and knowledge of the concepts of loops and iterative techniques, and recursion, in algorithms which include character codes and mathematical operations such as base conversions, masking and base arithmetic.
• Introduction to Algorithms: History and Overview, Basic Algorithmic Analysis, Algorithmic Strategies: Describe, model, and compare algorithmic strategies such as brute force/exhaustive methods, greedy methods and divide and conquer on the operation of fundamental algorithms involving simple mathematical methods, by using examples and/or pseudocode.
• Introduction to Database Systems: History and Overview, Database systems, Data Modeling: Model the operation of algorithms using examples and Pseudocode and the structure of data sets using graphs, trees, and Entity-Relationship Diagrams.