CS3910 Science of Computer Programming

Introduction to computational thinking and basic concepts related to systematic problem solving assisted by computers. Imperative, functional and concurrent programming. Identifying languages for problem modeling and solving. Software analysis and generation using design structures, embedded knowledge, systematic reasoning for computer systems and software applications using computational thinking, machine learning and big data. Implications for agile/reliable software systems and military applications of AI.


Prerequisites: Automata Theory CS3101, Algorithms C3150 and Software methodology SW3460

Lecture Hours


Lab Hours


Course Learning Outcomes

After completing this course, students will be able to do the following:

  • Understand computational thinking and the role of specialized languages and tools in system development.
  • Explain the concepts that enable model-based design and automatic software generation.
  • Test and certify generated code.
  • Trace generated code to requirements.