כיצד מפתחים יישומים רחבי היקף ומורכבים? כיצד דואגים שהיישומים יהיו שלמים וכלליים? מה המפתח לתכנות ברור ונוח לתחזוקה? תשובות לשאלות אלו הן הבסיס לתכנות מונחה עצמים והנדסת תוכנה. הקורס יעסוק בלימוד העקרונות תוך יישומם בשפת C++. הקורס ילווה בדוגמאות ותרגילים של יישומים מלאים על מגוון מרכיביהם: מבני נתונים, אלגוריתמים, בינה מלכותית, ממשק, גרפיקה, אבטחת מידע, ביצועים ועוד. הקניית העקרונות, בסמסטר זה, תהיה בעיקר סביב הכלים של מחלקות, ירושה, פולימורפיזם, דיאגראמות UML, ומבוא לתבניות עיצוב.