Home » Kurikulum » Silabus dan Satuan Acara Pengajaran (SAP) » Semester 4 » IFS2280 Penyelesaian Masalah dengan C

IFS2280 Penyelesaian Masalah dengan C

Kode Matakuliah: IFS2280

Bobot sks:

3

Semester:

4

Unit Penanggung Jawab:

Prodi S1 Teknik Elektro

Sifat:

Wajib

Nama Matakuliah Penyelesaian Masalah dengan C
Problem Solving with C
Silabus Ringkas [Uraian ringkas silabus matakuliah dalam Bahasa Indonesia (maksimum 30 kata)]
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.
Silabus Lengkap [Uraian lengkap silabus matakuliah dalam Bahasa Indonesia (maksimum 100 kata)]
Luaran (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.
Matakuliah Terkait IFS1101 Pengantar Teknologi Informasi Prasyarat
IFS2180 Pengantar Pemrograman Prasyarat
Kegiatan Penunjang [Praktikum, kerja lapangan, dsb.]
Pustaka Hanly, Jeri, and Koffman, Elliot, “Problem Solving and Program Design in C”, 5th ed, Addison Wesley, New York, 2007
Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, Clifford Stein, “Introduction to Algorithms”, The MIT Press, 3rd edition, 2009
[Penulis, Judul, Edisi, Penerbit, Tahun terbit] ([Pustaka utama/alternatif/pendukung])
Panduan Penilaian [Termasuk jenis dan bentuk penilaian]
Catatan Tambahan  

 

 

 

Mg# Topik Sub Topik Capaian Belajar Mahasiswa Sumber Materi
1 Introduction History and Overview
  1. Identify some contributors to programming fundamentals and relate their achievements to the knowledge area.
  2. Define the meaning of algorithm and data structure.
  3. Know the reasons that a way to solve problems is by using algorithms.
  4. Distinguish the difference between a stack and a queue.
  5. Identify the difference between various programming paradigms.
  6. Explain recursion and the way it works.
2 Programming Construct

Variables, types, expressions, and assignment

Simple I/O

  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit.
  2. Write a program that uses basic computation and simple I/O.
3 Programming Construct Conditional Structures
  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit.
  2. Write a program that uses standard conditional.
4 Programming Construct

Iterative control structures, Pointers

 

  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit.
  2. Write a program that uses iterative structures and pointers.
5 Programming Construct Functions and parameter passing, File I/O
  1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs covered by this unit.
  2. Write a program that uses procedure, functions, parameter passing, and File I/O.
6 Algorithms and problem-solving

Problem-solving strategies, Structured decomposition

Debugging strategies

  1. Define the basic properties of an algorithm.
  2. Develop algorithms for solving simple problems.
  3. Use a suitable programming language to implement, test, and debug algorithms for solving simple problems.
  4. Apply the techniques of structured decomposition to break a program into smaller pieces.
7 Data Structure

Arrays and Records

Strings and string processing

  1. Identify data structures useful to represent specific types of information and discuss the tradeoffs among the different possibilities.
  2. Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables.
8 Data Structure

Data representation in memory

Static, stack, and heap allocation

Runtime storage management

Linked structures

  1. Identify data structures useful to represent specific types of information and discuss the tradeoffs among the different possibilities.
  2. Describe the way a computer allocates and represents these data structures in memory.
9 Midterm
10 Data Structure

Implementation strategies for stacks, queues, and hash tables

Implementation strategies for graphs and trees

  1. Identify data structures useful to represent specific types of information and discuss the tradeoffs among the different possibilities.
11 Recursion

The concept of recursion

Recursive mathematical functions

Divide-and-conquer strategies

Recursive backtracking

  1. Explain the concept of recursion.
  2. Explain the structure of the divide-and-conquer approach.
  3. Write, test, and debug simple recursive functions and procedures.
  4. Describe how recursion can be implemented using a stack
12 Basic Algorithm Analysis

Asymptotic analysis of upper and average complexity bounds

Identifying differences among best, average, and worst case behaviors

  1. Determine the time complexity of simple algorithms.
  2. Deduce the recurrence relations that describe the time complexity of recursively-defined algorithms, and solve simple recurrence relations.
13

Big “O,” little “o,” omega, and theta notation

Empirical measurements of performance

Time and space tradeoffs in algorithms

Use big O, omega, and theta notation to give asymptotic upper, lower, and tight bounds on time and space complexity of algorithms.
14 Algorithm Strategy

Brute-force/exhaustive search algorithms

Greedy algorithms

Design algorithms using the brute-force, greedy, and divide-and-conquer strategies.
15 Algorithm Strategy

Divide-and-conquer

Backtracking

Design an algorithm using at least one other algorithmic strategy from the list of topics for this unit.
16 Computing Algorithm Simple numerical algorithms Use and implement the fundamental abstract data types—specifically including hash tables, binary search trees, and graphs—necessary to solve algorithmic problems efficiently.
17 Computing Algorithm

Sequential and binary search algorithms

Sorting algorithms

Hash tables

Binary search trees

  1. Solve problems using efficient sorting algorithms, and fundamental graph algorithms, including depth-first and breadth-first search, single-source and all-pairs shortest paths, transitive closure, topological sort, and at least one minimum spanning tree algorithm.
  2. Demonstrate the following abilities: to evaluate algorithms, to select from a range of possible options, to provide justification for that selection, and to implement the algorithm in simple programming contexts
18 Intro to Parallel and Distributed Why parallel computation?, Task/Thread, concurrency, OpenMP
  1. Discuss the concept of parallel processing beyond the classical von Neumann model.
  2. Describe alternative architectures such as SIMD, MIMD, and VLIW.
  3. Explain the concept of interconnection networks and characterize different approaches.
  4. Discuss the special concerns that multiprocessing systems present with respect to memory management and describe how these are addressed.
  5. Explain the distributed paradigm.
  6. Explain one simple distributed algorithm
  7. Explain the various method of communication method for data movement with a specific topology
  8. Understand the types of problem can be parallelize and the limit of performance gain
  9. Write a program that uses all programming concept of MPI, OpenMP, and CUDA.
19 Final Exam