How can I generate a variable number of permutations based off an ArrayList?
===

I'm building a program to help students set up schedules by inputting class numbers and prioritizing them. The student should be able to plug in between three to ten classes, and the program would offer the twenty "best" schedules given parameters set up by the student. However, every class has a variable amount of class sections to choose from. (One class could be offered Monday/Wednesday/Friday classes at 8, 10, or 11 or Tuesday/Thursday classes at 11, 3, or 5:30 for example). Apart from this, the student can choose to enter any number of classes. Given this, I've been having difficulty setting up an algorhythm to generate all available calendars. (Calendars will also be limited by credits) 

Each time the program is run, a couple Course instances are created. Each of the Course objects has an ArrayList of ClassSection instances, each of which has an ArrayList of ClassTime instances. Each ClassTime instance has a start time and an end time for each day of the week it runs.

I have created a Schedule class, which contains several ClassSection instances. It has a method which returns false one tries to add a ClassSection whose ClassTime interferes with an already added ClassSection's ClassTime, or a ClassSection for the same Course is added. The method returns true if it is added without a problem.

My goal is to convert my ArrayList<Course> into ArrayList<Calendar> where the Calendar ArrayList has every possible permutation of all the CourseSection instances without exceeding the credit count. I will then rank each Calendar appropriately, and carry on from there.

Can anybody please help me with the algorhythm to iterate through and make these Calendars? I'm really having trouble with it.

NOTE: This is my first time asking a question, I apologize if I've provided too little/too much information.