School of Electrical Engineering
and Informatics
Institut Teknologi Bandung
El2008 Problem Solving with C (3 Crs)
Semester II 2014
Course Description (3 Crs)
This course lays the foundation of algorithm analysis and data structures for
the electrical engineering curriculum. In this class, students will experience
applications of concepts learned in the classroom. They will learn through
hands-on experience how to read and understand problem statements and
develop the algorithm and implement it using C to solve the problem.
Prerequisite
KU1071 Introduction to Information Technology A
Learning Outcomes
Provide an introduction to problem solving tools using an engineering
workstation
1. Focus on teaching you the C programming language while emphasizing
problem solving techniques and software engineering skills that are
applicable in a wide variety of fields.
2. Provide students with the necessary skills to solve a variety of engineering
and programming problems as needed throughout their undergraduate work.
Essential Reading/ Textbooks
1. Hanly, Jeri, and Koffman, Elliot, "Problem Solving and Program Design in
C", 7th ed, Addison Wesley, New York, 2013
2. Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein,
Introduction to Algorithms, The MIT Press, 3rd edition, 2009
Course Schedule
Week
1
Topic
Reference
Introduction
History and Overview
Programming
Construct
Variables, types, expressions, and
assignment
Simple I/O
Programming
Construct
Conditional Structures
Programming
Construct
Iterative control structures, Pointers
Programming
Construct
Functions and parameter passing, File
I/O
Algorithms and
problem-solving
Problem-solving strategies, Structured
decomposition
Debugging strategies
Data Structure
Arrays and Records
Strings and string processing
Data Structure
Data representation in memory
Static, stack, and heap allocation
Runtime storage management
Linked structures
Midterm
8
Data Structure
Implementation strategies for stacks,
queues, and hash tables
Implementation strategies for graphs
and trees
Recursion
The concept of recursion
Recursive mathematical functions
Divide-and-conquer strategies
Recursive backtracking
Basic Algorithm
Analysis
Asymptotic analysis of upper and
average complexity bounds
Identifying differences among best,
average, and worst case behaviors
10
Big "O," little "o," omega, and theta
notation
Empirical measurements of
performance
Time and space tradeoffs in algorithms
11
Algorithm
Strategy
Brute-force/exhaustive search
algorithms
Greedy algorithms
12
Algorithm
Strategy
Divide-and-conquer
Backtracking
13
Computing
Algorithm
Simple numerical algorithms
14
Computing
Algorithm
Sequential and binary search
algorithms
Sorting algorithms
Hash tables
Binary search trees
15
Intro to Parallel
and Distributed
Why parallel computation?,
Task/Thread, concurrency, OpenMP
16
Final Exam