Lectures:  MW 2:05-2:55 pm
Location:  KACB 2447

Instructor:  Edmond Chow
E-mail: 
Office Hours: KACB 1332, MW 3-4 pm

TA: Hamid Hassanzadeh
TA E-mail: hamid_hassanzadeh2002@yahoo.com
TA Office Hours: KACB 1343, Thursdays 11 am-12 pm, Fridays 9-10 am



Note

This is a 3 credit course with 2 hours of lecture per week. Credit not given for Computer Science or Computational Media students; Graduate students in Computational Science and Engineering with limited computing background are strongly encouraged to take this course.

Course Description

This course is designed for advanced undergraduate and graduate students with limited computing background to prepare them for upper division and graduate coursework in computational science and engineering. Development of computer software to solve problems in science and engineering. Computing principles, computer architecture, algorithms and data structures; software development methodologies and tools; introduction to advanced topics such as parallelism and object-oriented design; Students will be expected to devote a significant amount of time to practice and develop computer programming skills.

Prerequisites

CS 1371 and senior or graduate standing in a mathematics, science, or engineering program (juniors by permission of instructor)

Topics

Starting from real-world problems that commonly arise in science and engineering, students will develop the knowledge and skills needed to develop computational solutions to attack these problems. Topics include:
  • Computational problems in science and engineering
  • Computer architecture necessary to understanding program behavior and performance
  • Elementary data structures, including arrays, lists, trees, graphs, hash tables, heaps
  • Algorithms and their analysis, including dynamic programming and concepts of complexity
  • C programming, including a basic introduction to system-level programming
  • Software engineering methodologies (best practices for code design, debugging, testing, documentation, revision control)
  • Advanced programming concepts such as object-oriented design, parallel computing

Modules

The course is composed of five modules, roughly corresponding to core topics covered in the School of Computational Science and Engineering. Each module is roughly three weeks. Each module has a Programming Problem Set due at the end of the module. The modules are:
  • Numerical Algorithms
  • Data Analysis and Machine Learning
  • Modeling and Simulation
  • Graphs and Social Networks
  • Parallel Computing

Grading

70% programming problems
30% Final Exam (programming). Students must pass the final exam to pass the course. Dec. 12 (Wed), 11:30 am - 2:20 pm.

Computer Resources

You may use any computer with a C compiler for this course. If you need access to a computer with a C compiler, all students in this course have an account on the jinx cluster, which runs Linux. We will also use the jinx cluster for our module on parallel computing. Log into the jinx cluster at jinx-login.cc.gatech.edu using your Georgia Tech user name and password. More information about jinx is available at: https://support.cc.gatech.edu/facilities/instructional-labs/jinx-cluster .

Textbooks

There is no required textbook for this course. The following texts are recommended:
  • C Programming Language, 2nd edition, by B. W. Kernighan and D. M. Ritchie
  • C Programming: A Modern Approach, 2nd edition, by K. N. King
  • Introduction to Algorithms, by T. H. Cormen, C. E. Leiserson, R. L. Rivest, and C. Stein
  • Software Design for Engineers and Scientists, by J. A. Robinson

Collaboration, Citing, and Honor Code

Students are expected to follow the Georgia Tech Honor Code. Students are encouraged to work together and help each other on assignments and preparing for exams. However, submitted assignments must be individual work. One way to comply with this is to destroy any notes taken while consulting with other students before writing your own code. If you use the Web or other sources for any information, you must cite these sources in your assignment submission. You are encouraged to use the Web for information, but copying code from the Web without citation violates the Honor Code.