Course Description from the University Catalog

CS 6311 - Programming Languages I
Credits: 3.00
The course will investigate theoretical and practical aspects of programming languages while improving programming and problem solving skills. Theoretical topics will include the analysis and evaluation of programming languages, while the practical aspect will focus on problem solving, defensive programming, and debugging techniques.
Lecture: 2.00 Lab: 2.00
College: College of Arts and Sciences
Department: Computer Science
Pre-requisites: See hard copy catalog for pre-requisites.

Course Information

Course Syllabus
Course Page on the UWG CS Course Web (Moodle)

Course Summary

The following topics were covered in this course:
  • Program Development Tools
    • IDEs
      • Microsoft Visual Studio
  • Data Types and Conversion
    • Program Structure
  • Scope and Conditional Constructs
  • Iterative Constructs
    • break, continue, nested loops
  • Subprograms and Lists
  • Searching a List
    • Linear Vs. Binary
  • Software Validation and Autmated Unit Testing
    • TestDriven and NUnit
  • Inheritance, Adstraction, and Polymorphism
    • Object Oriented Programming and Polymorphism
    • Abstracti Classes and Methods
  • Exception Handling
  • Input/Output (IO)
    • Text Files
    • Binary Files
  • Comparer, Static Data, and Enumerated Types
    • IComparable and IComparer
    • ToString
  • GUIs
    • Controls
    • Menus and Dialogs
  • Value vs. Reference Variables and Immutable Objects
There were two exams:
  • Midterm 
    and
  • Final
There were also two code reviews that were done, one at midterm and one just before the final exam.

Course Assessment

From the syllabus:

Department learning objectives
  • Describe the characteristics of the major language paradigms.
  • Compare and contrast compiled, hybrid, and interpreted program translation approaches, describing the phases and merits of each approach.
  • Discuss language design issues such as orthogonality.
  • Discuss issues related to programming-in-the-small vs. programming-in-the-large.
  • Explain theoretical issues such as binding, type checking, scope, etc.
  • Demonstrate the difference between various parameter-passing mechanisms.
  • Incorporate exception handling into program.
  • Analyze a problem statement and produce specifications and working code. 
  • Use incremental, iterative development in program development.
  • Use a development environment to code and debug a software program.
  • Apply object-oriented techniques such as abstraction, inheritance, and polymorphism in developing software.

Completed Objectives?

Yes.  All of the learning objectives listed above were satisfied in this course.  See the course summary for more details.  I honestly credit this course as the reason that I am as good of a coder as I am.  I learned a great deal about the concepts of programming languages and program construction in this course and I highly recommend taking this course in addition to Software Development I (CS 6241) as they are two sides of the same coin.  Software development teaches methodology and good programming practices and this courses teaches complex coding and the combination of the two makes for a truly educatyion experience.  I found the classes I took from Dr. Yoder to be the most challenging of my tenure at UWG, but I also found them to be among the most educational.


Back Home