Course

CS3: Design in Computing

University of New South Wales

This course serves as an introduction to key concepts in computing, targeting second-year programmers. It covers:

  • Introduction to Java programming.
  • Object-oriented design principles.
  • Fundamental algorithm design techniques.

All materials are accessible on www.openlearning.net, allowing anyone interested to self-learn at their own pace. The current lectures are lightly edited draft versions from 2010, currently in use for Comp2911. Note that they are in low resolution and unedited, featuring sound issues and pauses. Enhanced versions will be uploaded soon. Feedback is welcomed, and if there's sufficient interest, improvements will be expedited.

Course Lectures
  • This module features the first lecture of the Computing 3 course (COMP2911) from 2010, presented by Richard Buckland. It introduces foundational concepts in design, focusing on key principles of computing. The lecture is currently available in a low-resolution format, which may include sound issues and unedited sections. The aim is to provide learners with an initial understanding of design in computing, which will be built upon in subsequent modules.

  • This module comprises the second lecture from Computing 3 (COMP2911), also taught by Richard Buckland in 2010. In this session, more advanced design concepts are introduced, building on the knowledge acquired in the first module. Learners will explore additional programming paradigms and design methodologies, which are essential for developing robust software solutions. As with the previous lecture, this version is unedited and comes with sound quality issues, but it remains a valuable resource for self-learners.

  • This module, titled "Greetings from the Future," features insights into emerging trends and technologies in computing. Richard Buckland shares his vision for the future of programming and design, discussing how current practices may evolve. Topics may include artificial intelligence, machine learning, and their implications for the field. This thought-provoking lecture aims to inspire students to think critically about the direction of their studies and future career paths.

  • This module, "Design in Computing 2B," continues to build upon previous lectures, focusing on specialized areas within object-oriented design and algorithm development. Students will delve into complex problem-solving techniques and the importance of design patterns in software engineering. Practical examples and case studies will be discussed to illustrate key concepts. This draft version is intended to provide a foundational understanding, and improvements will follow in future releases.

  • Module 5, "Design in Computing 3," introduces students to innovative design approaches and advanced programming techniques. Richard Buckland emphasizes the importance of creativity in computing, encouraging students to experiment with their design processes. The module also covers critical thinking and analytical skills necessary for effective problem-solving in complex software development scenarios. Learners will gain insights into best practices for collaborative projects and integration of various programming languages.

  • In "Design in Computing 4," students will explore contemporary topics in software development and design. This module emphasizes the significance of user experience (UX) design and interface development. Learners will study various methodologies for creating user-friendly applications, focusing on the balance between functionality and aesthetic appeal. The draft lecture highlights the importance of feedback and iterative design processes in producing high-quality software solutions.

  • Module 7, "Design in Computing 5," continues to build on previous content, focusing on the integration of various programming paradigms into a cohesive development process. Students will learn about different frameworks and tools that facilitate efficient software engineering practices. This draft version encourages learners to consider the practical applications of programming concepts in real-world scenarios. Collaboration and teamwork are emphasized as essential skills in the modern tech landscape.

  • "Design in Computing 6" explores advanced topics in software architecture and design principles. This module introduces students to the concept of scalability and performance optimization in software applications. Learners will examine various architectural patterns and their implications for system design. The lecture aims to deepen students' understanding of how to create efficient and effective software solutions that can adapt to changing user needs and technological advancements.

  • In "Design in Computing 7," students are introduced to emerging tools and technologies that are shaping the future of software development. This module emphasizes the importance of staying updated with industry trends and learning new programming languages and frameworks. Richard Buckland encourages learners to engage with community resources and participate in ongoing education. The draft content provides an overview of the current landscape in computing and what skills will be valuable in the future job market.

  • The final module, "Design in Computing 8," focuses on the integration of knowledge acquired throughout the course. Students will work on capstone projects that demonstrate their understanding of software design principles and programming skills. This collaborative experience is designed to enhance their learning and prepare them for professional opportunities. Richard Buckland will guide students in applying their knowledge to real-world problems, emphasizing the importance of teamwork and practical experience in the tech industry.