Skip to main content

ICS 140 Computational Thinking with Programming

An introduction to the formulation of problems and developing and implementing solutions for them using a computer. Students analyze user requirements, design algorithms to solve them and translate these designs to computer programs. The course also provides an overview of major areas within the computing field. Topics include algorithm design, performance metrics, programming languages and paradigms, programming structures, number representation, Boolean algebra, computer system organization, data communications and networks, operating systems, compilers and interpreters, cloud computing, data analytics, mobile computing, internet of things, and artificial intelligence) database, internet, security, privacy, ethics, and other societal and legal issues. Lab work and homework assignments involving flow charting tools and programming using a language such as Python form an integral part of the course.


Special information

Note: Students must be proficient in using a computer. Required skills include the ability to create directories (folders) and files of different types (plain text files, zip files, etc.) using a graphical user interface as well as a command line interface. Students are responsible to both be aware of and abide by prerequisites for ICS courses for which they enroll, and will be administratively dropped from a course if they have not met prerequisites.First day attendance is mandatory.
4 Undergraduate credits

Effective August 15, 2017 to present

Learning outcomes


  • Describe algorithms and their role in solving problems.
  • Explain the role of the operating system in a digital system.
  • Describe emerging technologies such as cloud computing, artificial intelligence, data analytics and others.
  • Describe different types of application software including database, internet, and games.
  • Explain security and privacy threats and describe measures to prevent them.
  • Describe the evolution of digital systems and their past, present, and potential future impact on human society.
  • Develop algorithmic solutions using appropriate programming structures and express algorithms using pseudocode, flow-charts or other design notation.
  • Demonstrate knowledge of common algorithms, such as binary search, finding the minimum/maximum value in a list, and quadratic sort.
  • Demonstrate the ability to select an appropriate algorithm for solving a problem.
  • Implement algorithms with a high-level programming language and provide simple documentation.
  • Express numbers in binary format.
  • Express and simplify Boolean expressions.
  • Describe the Von Neumann architecture and interaction between the processor and memory.
  • Explain how data communication works and give examples of networks.

Summer 2021

Section Title Instructor
01 Computational Thinking with Programming Jahn, Robert G Books Course details
02 Computational Thinking with Programming Luoma, Milton Harold Books Course details

Fall 2021

Section Title Instructor
01 Computational Thinking with Programming Dathan, Brahma Books Course details
02 Computational Thinking with Programming: Technology Exploration, Assessment Jahn, Robert G Books Course details
03 Computational Thinking with Programming Dathan, Brahma Books Course details
04 Computational Thinking with Programming Hassan, Farris Adam Books Course details

Spring 2022

Section Title Instructor
01 Computational Thinking with Programming Maistrovich, Jessica Kay Books Course details
50 Computational Thinking with Programming Lawrence, Aaron Richard James Books Course details