Course

CS3: Design in Computing

University of New South Wales

CS3: Design in Computing is a comprehensive course tailored for second-year programmers, focusing on key concepts in Java, object-oriented design, and algorithm development. The course materials are freely accessible online, encouraging self-paced learning.

Key features of the course include:

  • Introduction to fundamental programming concepts in Java.
  • Emphasis on object-oriented design principles.
  • Algorithm design and problem-solving techniques.
  • Access to low-resolution draft lectures from 2010, currently utilized in Comp2911.
  • Opportunity for feedback and suggestions for course improvement.

Please note that the uploaded materials may contain sound issues and are intended for personal exploration only. Higher quality versions will be provided in the future.

Course Lectures
  • This module features the first lecture from the Computing 3 (COMP2911) course, focusing on foundational concepts in design and programming. The lecture was recorded in 2010 and is presented in a draft format with low resolution.

    Key points of this lecture include:

    • Introduction to design principles in computing.
    • Overview of the course structure and expectations.
    • Initial exposure to Java programming language.

    Due to the draft nature of this material, viewers are advised to focus on the content rather than sound quality.

  • The second module continues the exploration of design in computing, building on concepts introduced in the first lecture. This session from 2010 provides insights into advanced programming techniques within Java.

    Topics discussed include:

    • Deepening understanding of object-oriented design.
    • Practical applications of Java in solving programming challenges.
    • Discussion of algorithm design principles.

    As with the first module, this lecture is a draft version, so viewers should be prepared for some audio issues.

  • This module, titled "CS3 Greetings from the Future," serves as an engaging interlude within the course. It aims to inspire students about the future of computing and the evolving landscape of technology.

    In this session, students will explore:

    • The significance of staying updated in the tech field.
    • Emerging trends in programming and computing.
    • Potential career paths and opportunities in technology.

    This module is designed to motivate learners and provide a broader perspective on their educational journey.

  • The "Design in Computing 2B" module builds upon previous concepts, offering a deeper analysis of programming structures within Java. This session emphasizes the importance of design patterns and best practices.

    Key learning outcomes include:

    • Understanding advanced object-oriented principles.
    • Implementing design patterns in Java applications.
    • Improving code quality through best practices.

    This module aims to equip students with essential tools for efficient programming and robust software development.

  • Module 5, "Design in Computing 3," is an integral part of the course that expands on Java programming techniques and algorithm development. This session focuses on practical applications and real-world scenarios.

    Topics covered include:

    • Advanced algorithm design techniques.
    • Problem-solving strategies in programming.
    • Application of Java in various computational problems.

    This module is designed to prepare students for practical programming challenges they may face in the industry.

  • The "Design in Computing 4" module introduces students to the complexities of software design and architecture. This draft session aims to provide a comprehensive understanding of high-level design concepts.

    Key areas of focus include:

    • Software architecture principles and patterns.
    • Integration of different components in software design.
    • Best practices for designing scalable and maintainable software.

    This module prepares learners for advanced studies in software engineering and development.

  • In "Design in Computing 5," students will explore advanced programming concepts and techniques to further enhance their Java skills. This draft module focuses on innovative approaches to problem-solving.

    Key learning objectives include:

    • Exploration of cutting-edge programming methodologies.
    • Encouraging creativity in software development.
    • Application of theoretical concepts in real-world scenarios.

    This module is aimed at fostering a deeper understanding of programming and encouraging students to think outside the box.

  • "Design in Computing 6" continues to build on previous modules, providing students with additional insights into programming paradigms and their applications. This draft session focuses on integrating new technologies.

    Topics discussed include:

    • Understanding different programming paradigms.
    • Integration of new technologies and frameworks.
    • Adapting to changes in the programming landscape.

    This module aims to keep students informed about evolving technologies and methodologies in the field of computing.

  • In "Design in Computing 7," students are introduced to collaborative programming and software development processes. This draft module emphasizes teamwork and communication in tech projects.

    Key components include:

    • Importance of collaboration in software development.
    • Techniques for effective team communication.
    • Real-world scenarios involving group projects.

    This module prepares learners for collaborative work environments, equipping them with essential skills for future projects.

  • Module 10, "Design in Computing 8," wraps up the course by synthesizing knowledge gained throughout the program. Students will reflect on their learning journey and future paths.

    Key themes include:

    • Review of key concepts and skills acquired.
    • Exploring potential career paths in computing.
    • Setting goals for continued learning and growth.

    This final module aims to inspire students to take their skills into the future, encouraging lifelong learning in the field of technology.