Computer Science

Machine Org | Prog Languages


Courses listed here are considered primarily computer science theory courses, and although programming may be involved, they do not count as "programming courses" for purposes of best practices and version control usage. Details on code submission requirements for these courses will be provided within the courses.



COSC 2325 Computer Organization and Machine Language

This course provides an introduction to the organization and architecture of digital computers. Topics include number systems, data representation, machine-level instruction formats, assembly language programming, CPU organization, memory hierarchy, input/output systems, and basic computer arithmetic.

For purposes of best practices and version control usage, this course does not count as a "programming course." It is a theoretical course, not a practical programming course.

The topics covered in the course will include but are not limited to:

  • Number systems and data representation.
  • Machine-level instruction formats and assembly language programming.
  • CPU organization and architecture.
  • Memory hierarchy and management.
  • Input/output systems and interfacing.
  • Basic computer arithmetic and operations.
[ back to top ]

COSC 3301 Programming Languages

COSC 3301 is a conceptual study of programming languages, focusing on how language features, paradigms, and design choices influence program behavior, correctness, safety, and expressiveness. Rather than teaching mastery of specific languages, the course emphasizes understanding programming languages as engineered systems and comparing the tradeoffs embodied in different designs.

Students examine major programming paradigms, including procedural, object-oriented, functional, and declarative approaches, and study core concepts such as syntax, semantics, scope and binding, type systems, control flow, abstraction, and error handling. The course also introduces high-level approaches to memory management, concurrency, and language design.

By the end of the course, students will be able to analyze unfamiliar programming languages, reason about program behavior, compare paradigms meaningfully, and articulate the design tradeoffs that influence language selection in professional software development.

For purposes of best practices and version control usage, this course does not count as a "programming course." It is a theoretical course, not a practical programming course.

[ back to top ]