Lectures:  MW 2:05-2:55 pm
Location:  ES&T, L1125

Instructors:  Edmond Chow and Richard Fujimoto
E-mail:  ,
TA: Ya-Lin Huang


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.


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


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) and software development tools such as integrated development environments (IDEs), revision control, project/bug tracking (e.g., bugzilla), scripting and related tools such as Matlab and python
  • Advanced programming concepts such as data abstraction and objects, object-oriented design, parallel computing


70% programming problems (5 during the semester)
30% Final Exam (programming). Students must pass the final exam to pass the course.


There are two required textbooks for the course:
  • Software Design for Engineers and Scientists, by J. A. Robinson.
  • C Programming: A Modern Approach, 2nd edition, by K. N. King. (Be sure to get the second edition covering C99.)

Both textbooks will be available on campus at Barnes and Noble and the Engineer's bookstore.