This course is part of Software Development Foundations.
This intermediate-level programming course builds on fundamental coding concepts to teach advanced program design with complex data structures. Students learn to create more efficient and maintainable code through abstraction, generative recursion, and sophisticated data handling. The curriculum includes practical projects like designing search programs and puzzle solvers, providing hands-on experience with advanced programming concepts.
3.7
(8 ratings)
45,983 already enrolled
Instructors:
English
English
What you'll learn
Design programs using complex data structures and abstraction
Implement efficient search algorithms for problem solving
Develop programs that operate on graph-based data
Create maintainable code through proper abstraction techniques
Skills you'll gain
This course includes:
PreRecorded video
Graded assignments, Exams
Access on Mobile, Tablet, Desktop
Limited Access access
Shareable certificate
Closed caption
Get a Completion Certificate
Share your certificate with prospective employers and your professional network on LinkedIn.
Created by
Provided by

Top companies offer this course to their employees
Top companies provide this course to enhance their employees' skills, ensuring they excel in handling complex projects and drive organizational success.





Module Description
This course advances programming skills by focusing on complex data structures and program design. Students learn to identify patterns in data definitions and functions, implement abstraction techniques, work with graph-based programs, and develop search algorithms. The curriculum emphasizes practical application through challenging projects, including developing a Sudoku puzzle solver. Special attention is given to creating well-structured, maintainable code.
Fee Structure
Individual course purchase is not available - to enroll in this course with a certificate, you need to purchase the complete Professional Certificate Course. For enrollment and detailed fee structure, visit the following: Software Development Foundations
Instructor

2 Courses
A Pioneering Computer Scientist Transforming Programming Languages and Software Design
Gregor Kiczales serves as Professor of Computer Science at the University of British Columbia, where he has been shaping the landscape of programming languages and software design since 2000. Born in 1961, he began his remarkable career at MIT's Lab for Computer Science before joining Xerox PARC, where he led teams that developed groundbreaking innovations including aspect-oriented programming (AOP) and AspectJ. His contributions to computer science include co-authoring the Common Lisp Object System specification and writing the influential book "The Art of the Metaobject Protocol." At UBC, he established the Software Practices Lab and revolutionized computer science education by designing CPSC 110, the foundational programming course focusing on systematic program design. His work has earned him numerous accolades, including the Senior AITO Dahl-Nygaard Prize and ACM Fellowship, while his research continues to focus on enabling programmers to write code that closely mirrors their design intentions. Beyond his academic role, he has served as UBC's Provost's Fellow for Flexible Learning Strategy and Executive Director of UBC Extended Learning, while his publications have garnered over 28,000 citations, cementing his position as a transformative figure in computer science education and programming language design.
Testimonials
Testimonials and success stories are a testament to the quality of this program and its impact on your career and learning journey. Be the first to help others make an informed decision by sharing your review of the course.
Frequently asked questions
Below are some of the most commonly asked questions about this course. We aim to provide clear and concise answers to help you better understand the course content, structure, and any other relevant information. If you have any additional questions or if your question is not listed here, please don't hesitate to reach out to our support team for further assistance.