Week 1, 2 and 3.
Click on the Help menu (on the right at the top of the Maple window), select Introduction, and click on the "New User's Tour". This also contains useful information for new users. Spend a few hours this week to find out what kind of commands are available in Maple. Every hour you spend now will save you a lot of time in the programming exercises later in the semester.

We will look at this Maple worksheet on sequences in class.

Make yourself familiar with the help system of Maple. Suppose you are interested in differentiation, then type the following in Maple: ?differentiate and you will quickly find out what the syntax for differentiation is in Maple, and that the name of the command is diff. Particularly useful in these help pages are the examples, and the "See Also" section, which gives you the names of related commands. This way you also find out quickly what the syntax for integration is. Look at the help pages of the following commands, and try examples for each of them: expand, factor, factors, sqrfree, gcd, collect, ifactor, igcd, solve, fsolve, isolve, dsolve, plot, plot3d, tubeplot, add, mul, seq, print, convert, simplify, series.

We will look at this worksheet on polynomials and the use of the quotes: ' ' in class. If there's enough time we'll look at one of the following worksheets: worksheet on rational functions, worksheet on matrices, worksheet on modular arithmetic, Study the remaining worksheets for next time.

Study the following worksheet (this worksheet also contains a few examples about programming). Test yourself by doing the first 20 exercises from the following list of exercises, which you can view as a postscript file or as a pdf file. Compare your results with the answers.

The following text file (which you can read into Maple by Maple's read command) contains the homework for week 1. Study the Maple commands in this file. What you need to turn in is a modification of an algorithm given in this file. Turn in date: Friday September 10.

We will look at this worksheet number systems in class. Write an implementation of Karatsuba multiplication. Turn it in on Friday September 17.

We will study this worksheet on gcd's and Extended Euclidean Algorithm in class.

We have covered most of chapters 1 and 2 of the book. Study these two chapters carefully, and make sure you understand them. If some things are not clear please let me know. Note that some of the algorithms are different from the ones in the worksheets, the ones in the worksheets tend to have fewer loops and more recursion. The actual computations will be equivalent though.

Week 4, 5, 6, 7 and 8.
We will study this worksheet on FFT and worksheet on p-adic numbers in class.

Turn in homework:
Use the Maple procedure "Factors(f) mod p" and the HenselLift procedure in the worksheet on p-adic numbers to factor the following polynomial in the same way as in the worksheet:

f:=x^12-32*x^10-36*x^9+426*x^8+780*x^7-148*x^6 +1860*x^5+5901*x^4+6996*x^3+26308*x^2-32640*x+56056;

Note: you have to choose a prime number p such that f will be square-free modulo p (i.e. all factors in Fp[x] have multiplicity 1).

More turn in homework:
Write an algorithm for Hensel lifting in the ring Q[[x]]. Do this in the same way as in the worksheet on p-adic numbers. The following worksheet contains an algorithm for Hensel lifting in Q[[x]] that only works when the factors have degree 1: worksheet on x-adic Hensel lifting, i.e. Hensel lifting with formal power series.

The Chinese Remainder Theorem, Squarefree factorization. Implement squarefree factorization for Fp[x]. So far we have covered chapters 1,2,3 of the book, and sections 4.2 and 4.4.


Solutions of a polynomial.

Solving equations with resultants. More applications of resultants and properties of resultants, and one more application: factorization over algebraic number fields.

Turn in the following assignment about the evolute and these three assignments. Turn in date: Friday Oct 29.

Week 9 and 10.
Factorization in Fp[x].

When f in Z[x] then Landau-Mignotte bound gives you an upper bound for the absolute value of the coefficients of any factor g in Z[x] of f. You can find this bound in the following file, available as postscript file or as a pdf file. We can use this bound to determine how many Hensel lift steps we need to do. This completes the algorithm of factorization in Q[x].

Other method of factorization in Q[x].

So far we have covered the material in chapters 1, 2, 3, 4 and 5.

Week 11.
Group work: Implement factorization in Fp[x], square-free factorization in Q[x] and Hensel lifting (these two can be copied from the worksheets above), the Landau-Mignotte bound, and factorization in Q(alpha)[x] where alpha is the RootOf an irreducible polynomial (the easiest is to use evala(Norm(..)) but you can also use a resultant).

Study the following worksheet on Polynomial Ideals and Groebner Basis. Assignment: implement the Buchberger algorithm, which is described in the last section of this worksheet.

Can you think of any reason why the Buchberger algorithm should terminate? Think about that question for a while, and after that read this worksheet on monomial ideals to find the answer.

Week 12-15. Applications of Groebner basis.
Some applications .