Giter Site home page Giter Site logo

dideler / course-advisor Goto Github PK

View Code? Open in Web Editor NEW
5.0 5.0 4.0 1.51 MB

An expert system for advising Computer Science students (at Brock) which courses to enroll in.

Home Page: http://dideler.github.com/course-advisor

License: Other

Prolog 99.65% Shell 0.35%

course-advisor's People

Contributors

dideler avatar kellymoylan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

course-advisor's Issues

GUI

Will make the expert system much more user friendly.

Possible options:

Improve dump output

The output from the dump command can get messy when the rule dumped is at least a few lines long.
Change it so it's easier to read (use more newlines probably).

Let user know if they're supposedly ready to graduate

If there are no courses to suggest, then the user is probably ready to graduate (of course this should be taken with a grain of salt).

The proper way would be to count the number of credits they have so far, and see if it meets the number required for their program.

The very proper way would be in addition to the above, to also check that all program notes are satisfied (e.g. program note 10, which lots of students fail to satisfy until talking to Gord).

But before doing it properly, do it the quick way first, then improve upon it.

Add a course command

A command to let users query a course which supplies them with all known info about the course.

For example:

> course(cosc_1P02).

would return info such as the course name, description, prerequisites, length of weekly lectures/seminars/labs, etc.

This requires the course predicates in the KB to contain extra info than they do now.

Format text with ANSI attributes

Improve usability by enhancing some text with ANSI attributes.
For example, commands can be bolded or in a different colour, title can have a background colour, etc.

?- ansi_format([bold,fg(cyan)], 'Hello ~w', [world]).

Some commonly used attributes are:

  • bold
  • underline
  • fg(Color), bg(Color), hfg(Color), hbg(Color)

Defined color constants are below. =default= can be used to access the default color of the terminal.

  • black, red, green, yellow, blue, magenta, cyan, white

ANSI sequences are omitted if and only if

  • The =current_output= has the property tty(true) (see stream_property/2).
  • The Prolog flag =color_term= is =true=.

See ansi_term.pl

Video tutorial

Show example execution and use of all commands.

Put it on YouTube and embed it on the site.

Comment the code

The shell utilities should be properly commented with inline documentation.

Explain how each predicate in our program is to be called and how it functions.

Brian Ross' suggested format is:

/* member(Item, List):

        input/output: constant Item
        input: list List

     Member is satisfied if Item is found in List.
     Member is nondeterministic -- multiple solutions can be returned. */

My suggested format is:

/**
 * Operates on a list of items and returns true if the given item is a member of the list.
 * Multiple solutions can be found.
 * @param Item The item to determine membership for. 
 * @param List The list of items to search.
 * @return Boolean whether Item is a member of List.
 */

or a very simple version:

/**
 * True if Item is a member of List.
 */

Improve Knowledge Base

A neatly structured knowledge base for the computer science calendar.

Also:

  • consider making it English-like
  • better predicate/rule naming

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.