04-330   Fundamentals of Software Development & Problem Solving

Location: Africa

Units: 12

Semester Offered: Fall

Course description

This course lays the foundations for approaching problem-solving in a logical, well-designed approach and implementing solutions to a range of technical problems with well-written, high-quality, and extensible software using the basic “best practices” used in the field of software engineering.

Topics include algorithm development, problem-solving (decomposition and synthesis), program design, data representation, arithmetic and logical expressions, input/output operations, basic user interfaces, and object-oriented programming and design, with an emphasis on developing good programming habits. Intensive programming assignments are required.

Learning objectives

The programming will involve understanding and analyzing a set of requirements for a problem, formulating a solution, and implementing that solution on the computer along with tests that show that the program achieves its goals.


The successful student will be able to:

  • Understand a basic Computer-Science approach to problem-solving, including algorithm development and proper testing.
  • Demonstrate proficiency in programming using a modern programming language.
  • Apply these problem-solving techniques and programming skills to develop software solutions to solve a wide range of technical problems.

Content details

  • Classes, objects, methods, strings
  • Control Statements
  • Arrays, array lists
  • Inheritance, polymorphism
  • GUIs, graphics
  • Files, streams
  • Recursion


None. It is expected that students will enroll only if they have no programming background whatsoever or have been recommended because they are unable to code in a programming language at an acceptable level. Prospective students who have already taken a programming course or are unsure of their abilities should consult the instructor prior to enrollment.


Ahmed Biyabani