Available courses

ICS100: Introduction to Computer Science

Course Description ICS100 is an entry-level course that introduces students to the foundational concepts of computer science and the art of programming, designed for both majors and non-majors, with or without prior programming experience. This course teaches students how to think algorithmically and solve problems efficiently, covering a broad spectrum of topics that are essential to understanding and applying computer science principles.

Topics Include:

  • Abstraction: Understanding the importance of simplifying complex systems by breaking them down into manageable components.
  • Algorithms: Learning to design and analyze step-by-step procedures for solving problems.
  • Data Structures: Exploring various ways to organize and store data for efficient access and modification.
  • Encapsulation: Emphasizing the bundling of data with the methods that operate on that data.
  • Resource Management: Managing system resources such as memory and processing power effectively.
  • Security: Introduction to the principles of securing data and systems against unauthorized access and vulnerabilities.
  • Software Engineering: Applying engineering principles to software development to ensure robust, reliable, and maintainable systems.
  • Web Development: Basics of creating and managing web applications, including front-end and back-end development.

Programming Languages Covered:

  • C: Understanding the fundamentals of programming with a focus on procedural programming.
  • Python: Leveraging a high-level, versatile language for rapid development and scripting.
  • SQL: Managing and querying relational databases.
  • JavaScript: Enabling interactive web development.
  • CSS and HTML: Building and styling web pages.

Real-World Problem Sets: Problem sets are inspired by real-world domains such as biology, cryptography, finance, forensics, and gaming, providing practical experience in applying theoretical concepts to solve tangible problems.

Course Structure: Students who complete nine problem sets (programming assignments) and a final project with satisfactory scores will be eligible for a certificate. ICS100 is designed to be self-paced, allowing students to progress through the course material on their own schedule.

Through ICS100, students will gain a solid foundation in computer science, preparing them for further study or careers in the tech industry. The course emphasizes both theoretical understanding and practical application, ensuring a well-rounded introduction to the field.