README: Programming Assignments Overview

This README file provides a brief overview of the programming assignments in this course. Each assignment focuses on different aspects of programming languages, compilers, and expert systems.

Homework 1: Essay on Two Programming Languages

Objective: Write an essay analyzing two programming languages from different paradigms (e.g., procedural and object-oriented).

Requirements:

1- Compare and contrast two programming languages (e.g., C and C++ or Java)
2- The essay should have at least 2000 words (and at most 3000 words)
3- Use double spacing and "Times New Roman 11pt" typeface
4- Save your essay as a PDF file named number_lastname_firstname_hw1.pdf

Homework 2: G++ Language Lexer

Objective: Implement a lexer for the G++ language in two different ways: using Flex (a lexer generator tool) and Common Lisp.

Deliverables:

gpp_lexer.l (Flex implementation)
gpp_lexer.c (C file generated by Flex)
Any necessary header (.h) or C (.c) files
gpp_lexer.lisp (Common Lisp implementation)

Homework 3: G++ Language Syntax Analyzer

Objective: Implement a syntax analyzer for the G++ language in two different ways: using Yacc (a parser generator tool) and Common Lisp.

Deliverables:

gpp_interpreter.y (Yacc implementation)
Corresponding C files generated by your lexer and syntax analyzer
Any necessary header (.h) or C (.c) files
gpp_interpreter.lisp (Common Lisp implementation)

Homework 4: Simple Expert System in Prolog

Objective: Write a simple expert system in Prolog for class scheduling and flight route planning.

Part 1: Class Scheduling

Model rooms, courses, instructors, and students
Implement queries for scheduling conflicts, room assignments, and student enrollments

Part 2: Flight Route Planning

Write a predicate connection(X, Y, C) that checks if there is a route between any two given cities