/****************** courses ************************************/ /*** this is the main course data in coded form ****************/ spr03(cs2213, 1, 1900-mw, maltrud). spr03(cs2213, 2, 0930-tr, maltrud). spr03(cs2413, 1, 1000-mwf, maynard). spr03(cs2513, 1, 1200-mwf, key). spr03(cs2733, 1, 1300-mwf, wagner). spr03(cs3233, 1, 1230-tr, tian). spr03(cs3343, 1, 1530-tr, kwek). spr03(cs3723, 1, 1200-mwf, wagner). spr03(cs3733, 1, 1230-tr, srobbins). spr03(cs3743, 1, 1900-tr, staff). spr03(cs3773, 1, 1730-tr, lo). spr03(cs4313, 1, 1400-mw, bylander). spr03(cs4363, 1, 1000-mwf, wagner). spr03(cs4383, 1, 1300-mwf, maynard). spr03(cs4753, 1, 1730-mw, yum). spr03(cs4913, 0, arranged, staff). spr03(cs4953, 1, 0930-tr, srobbins). spr03(cs4993, 0, arranged, staff). /***************** times ***************************************/ /**** just match normal time with coded time *******************/ timearr(arranged, ' ', 'ARRANGED '). timemwf(0800-mwf, 'MWF', '0800-0850am'). timemwf(0900-mwf, 'MWF', '0900-0950am'). timemwf(1000-mwf, 'MWF', '1000-1050am'). timemwf(1100-mwf, 'MWF', '1100-1150am'). timemwf(1200-mwf, 'MWF', '1200-1250pm'). timemwf(1300-mwf, 'MWF', '0100-0150pm'). timemwf(1400-mw, 'MW ', '0200-0315pm'). timemwf(1530-mw, 'MW ', '0330-0445pm'). timemwf(1730-mw, 'MW ', '0530-0645pm'). timemwf(1900-mw, 'MW ', '0700-0815pm'). timemwf(2030-mw, 'MW ', '0830-0945pm'). timetr(0800-tr, 'TR ', '0800-0915am'). timetr(0930-tr, 'TR ', '0930-1045am'). timetr(1100-tr, 'TR ', '1100-1215pm'). timetr(1230-tr, 'TR ', '1230-0145pm'). timetr(1400-tr, 'TR ', '0200-0315pm'). timetr(1530-tr, 'TR ', '0330-0445pm'). timetr(1730-tr, 'TR ', '0530-0645pm'). timetr(1900-tr, 'TR ', '0700-0815pm'). timetr(2030-tr, 'TR ', '0830-0945pm'). /******************* courses ***************************************/ /***** just match name and number of course with coded course ******/ courses(cs2213, 'CS 2213', 'Advanced Programming '). courses(cs2413, 'CS 2413', 'Systems Programming '). courses(cs2513, 'CS 2513', 'Computer Organization I '). courses(cs2733, 'CS 2733', 'Computer Organization II'). courses(cs3233, 'CS 3233', 'Discrete Math Structures'). courses(cs3343, 'CS 3343', 'Analysis of Algorithms '). courses(cs3723, 'CS 3723', 'Programming Languages '). courses(cs3733, 'CS 3733', 'Operating Systems '). courses(cs3743, 'CS 3743', 'Database Management '). courses(cs3773, 'CS 3773', 'Software Engineering '). courses(cs4313, 'CS 4313', 'Automata and Formal Lang'). courses(cs4363, 'CS 4363', 'Cryptography '). courses(cs4383, 'CS 4383', 'Computer Graphics '). courses(cs4753, 'CS 4753', 'Computer Architecture '). courses(cs4913, 'CS 4913', 'Independent Study '). courses(cs4953, 'CS 4953', 'Special Studies in CS '). courses(cs4953, 'CS 4953', 'SS-CS: Experiment in CS '). courses(cs4993, 'CS 4993', 'Honors Research '). /***************** faculty *************************************/ /***** just match full name with coded name ********************/ faculty(bylander, 'Tom Bylander '). faculty(key, 'Cathy Key '). faculty(kwek, 'Steven Kwek '). faculty(lo, 'Chia-Tien Dan Lo'). faculty(maltrud, 'Mike Maltrud '). faculty(maynard, 'Hugh Maynard '). faculty(tian, 'Qi Tian '). faculty(wagner, 'Neal Wagner '). faculty(yum, 'Ki Hwan Yum '). faculty(staff, 'CS Staff '). year('2003'). season('Spring'). /***** first print raw course data ****************************/ spr03_print_simple(_) :- spr03(Course,Sect,Time,Fac), write(Course), write('-00'), write(Sect), write('\t'), write(Time), write(' \t'), write(Fac), nl, fail. /***** print data in non-coded form ***************************/ spr03_print(_) :- spr03(Course,Sect,Time,Fac), courses(Course, Pcoursenum, Pcoursename), (timemwf(Time,Pdays,Ptime) | timetr(Time,Pdays,Ptime) | timearr(Time,Pdays,Ptime)), faculty(Fac,Pfac), write(Pcoursenum), write('-00'), write(Sect), write(' '), write(Pcoursename), write(' '), write(Pdays), write(' '), write(Ptime), write(' '), write(Pfac), nl, fail. /***** the rest is to print faculty first, then courses *******/ spr03_faculty_print(_) :- write('Courses arranged by faculty'), nl, nl, (faculty_printall(_) | nl). faculty_printall(_) :- faculty(Fac,Pfac), write(Pfac), write(' '), (semester_faculty_print(Fac) | nl), nl, fail. semester_faculty_print(Fac) :- spr03(Course,Sect,Time,Fac), courses(Course,Pcoursenum,Pcoursename), (timemwf(Time,Pdays,Ptime) | timetr(Time,Pdays,Ptime) | timearr(Time,Pdays,Ptime)), write(Pcoursenum), write('-00'), write(Sect), write(', '), write(Ptime), write(' '), write(Pdays), write(' ('), write(Pcoursename), write(')'),nl, fail.