Program: 112823
Project: 112823
Buggy source:
public double boardScore(BoardState board){
  LinkedList<Minion> myBoardCards;
  LinkedList<Minion> opBoardCards;
  LinkedList<Card> myHandCards;
  myBoardCards=board.getMinions_p0();
  opBoardCards=board.getMinions_p1();
  myHandCards=board.getCards_hand_p0();
  double myScore=0.0;
  for (  final Minion card : myBoardCards) {
    myScore+=card.getAttack() * my_wAttack_ + card.getHealth() * my_wHealth_ + (card.getTaunt() ? 1.0 : 0.0) * wTaunt_ + (card.getAttack() + card.getHealth()) * my_wDivineShield_;
  }
  double opScore=0.0;
  for (  final Minion card : opBoardCards) {
    opScore+=card.getAttack() * enemy_wAttack_ + card.getHealth() * enemy_wHealth_ + (card.getTaunt() ? 1.0 : 0.0) * wTaunt_ + (card.getAttack() + card.getHealth()) * enemy_wDivineShield_;
  }
  double handScore=0.0;
  for (  final Card card : myHandCards) {
    if (card instanceof SpellDamage)     handScore+=((SpellDamage)card).getAttack() * wSd_mult_ + wSd_add_;
 else     handScore+=card.getMana() * wMana_;
  }
  double heroScore=my_wHeroHealth_ * board.getHero_p0().getHealth() - enemy_wHeroHealth_ * board.getHero_p1().getHealth();
  if (board.getHero_p1().getHealth() <= 0) {
    heroScore+=100000.0;
  }
  if (board.getHero_p0().getHealth() <= 0) {
    heroScore-=100000000.0;
  }
  double minionScore=0.0;
  minionScore+=my_wNumMinions_ * (board.getNumMinions_p0());
  minionScore-=enemy_wNumMinions_ * (board.getNumMinions_p1());
  double score=myScore - opScore + handScore + heroScore + minionScore;
  return score;
}

Fixed version (ground truth):
public double boardScore(BoardState board){
  LinkedList<Minion> myBoardCards;
  LinkedList<Minion> opBoardCards;
  LinkedList<Card> myHandCards;
  myBoardCards=board.getMinions_p0();
  opBoardCards=board.getMinions_p1();
  myHandCards=board.getCards_hand_p0();
  double myScore=0.0;
  for (  final Minion minion : myBoardCards) {
    myScore+=minion.getAttack() * my_wAttack_;
    myScore+=minion.getHealth() * my_wHealth_;
    myScore+=(minion.getTaunt() ? 1.0 : 0.0) * wTaunt_;
    if (minion.getDivineShield())     myScore+=((minion.getAttack() + minion.getHealth()) * my_wDivineShield_);
  }
  double opScore=0.0;
  for (  final Minion minion : opBoardCards) {
    opScore+=minion.getAttack() * enemy_wAttack_;
    opScore+=minion.getHealth() * enemy_wHealth_;
    opScore+=(minion.getTaunt() ? 1.0 : 0.0) * wTaunt_;
    if (minion.getDivineShield())     opScore+=(minion.getAttack() + minion.getHealth()) * enemy_wDivineShield_;
  }
  double handScore=0.0;
  for (  final Card card : myHandCards) {
    if (card instanceof SpellDamage)     handScore+=((SpellDamage)card).getAttack() * wSd_mult_ + wSd_add_;
 else     handScore+=card.getMana() * wMana_;
  }
  double heroScore=my_wHeroHealth_ * board.getHero_p0().getHealth() - enemy_wHeroHealth_ * board.getHero_p1().getHealth();
  if (board.getHero_p1().getHealth() <= 0) {
    heroScore+=100000.0;
  }
  if (board.getHero_p0().getHealth() <= 0) {
    heroScore-=100000000.0;
  }
  double minionScore=0.0;
  minionScore+=my_wNumMinions_ * (board.getNumMinions_p0());
  minionScore-=enemy_wNumMinions_ * (board.getNumMinions_p1());
  double score=myScore - opScore + handScore + heroScore + minionScore;
  return score;
}